变量与类型转换

变量声明(不允许重复声明)的语法:类型 + 变量名,如

void Main()
{
    int num;
    string name;
}

变量声明时,可以采用隐式局部变量:var

需要在声明时赋值,声明后类型固定,如

void Main()
{
    var num = 12;
    var name = "derek";

    Console.WriteLine (num);
    Console.WriteLine (name);
}

同时,使用var可以声明一些临时变量(匿名类型:只读),如

void Main()
{
    var myVar = new{Name="derek",Num=12};
    Console.WriteLine (myVar.Name);
    Console.WriteLine (myVar.Num);
}

变量赋值:注意类型匹配,赋值前是不允许使用的,因为C#使用的是强类型识别系统(RTTI)

未赋值直接使用时:

使用字面值为变量赋值:

void Main()
{
    int num;
    string name;

    num = 12;
    name = "derek";

    Console.WriteLine (num);
    Console.WriteLine (name);
}

使用表达式为变量赋值:

void Main()
{
    var myVar = DateTime.Now.ToLongDateString();
    var fullName = "lastName" + " " + "firstName";
    Console.WriteLine (myVar);
    Console.WriteLine (fullName);
}

使用变量为变量赋值:

void Main()
{
    var firstName = "ramm";
    var lastName = "derek";
    var fullName = firstName + lastName;
    Console.WriteLine (fullName);
}

常量:(静态常量:const,动态常量:readonly)

const用于项目运行过程中不变化的值,readonly允许在初始化中赋值,作为只读对象访问

比如圆周率,养老保险比例等,可以声明为const

void Main()
{
    const double PI = 3.14;

    Console.WriteLine ("请输入半径");
    double radius = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine ("您输入的的半径是:{0}", radius);

    Console.WriteLine ("圆周长:{0},面积:{1}",2 * PI * radius, PI * radius * radius);
}

readonly通常用于只读操作,比如连接字符串等,readonly不允许修饰方法内的局部变量

void Main()
{
    var da = new SqlDataAdapter("select * from Book",connectionString);
    var ds = new DataSet();
    da.Fill(ds);
    ds.Dump();
}

//定义数据库连接字符串
readonly string connectionString = @"Data Source=.;Initial Catalog=BookStoreDB;Integrated Security=True";

常见变量命名错误(具体解决办法,参考开发工具给出的错误提示)

  1. 命名不正确(比如使用系统关键字)
  2. 变量没有声明就使用
  3. 变量没有赋值就使用
  4. 声明了重复的变量名
  5. 变量赋值时类型不一致

类型转换:隐式(从小范围向大范围转换,从子类向父类转换)和显式转换

显式转换:  

  1. 基本数据类型转换:Convert

    Convert.ToDateTime("2010-1-1 18:22:33").Dump();
  2. 字符串转基本类型:Parse()方法

    Console.WriteLine (decimal.Parse("123.456").ToString("C"));
  3. 对象转字符串类型:ToString()方法

    Console.WriteLine (123.456M.ToString("C"));Console.WriteLine (DateTime.Now.ToString("D"));

关于类型转换的关键字:

  判断类型:is

void Main()
{
    Console.WriteLine (123 is string);    Console.WriteLine ("123" is string);    Console.WriteLine (true is string);    Console.WriteLine (true is object);
}

  强制类型转换:()   转换失败时抛出异常(LINQ Pad实现)

void Main()
{
    var book = Books.First();

    var price = (decimal)book.Price;
    var pubDate = (DateTime)book.PubDate;
    price.Dump();
    pubDate.Dump();
}

  强制类型转换:as  转换失败时返回null

void Main()
{
    Person s = new Student();
    Person t = new Teacher();

    var p1 = s as Teacher;
    var p2 = s as Person;
    var p3 = t as Teacher;

    p1.Dump();
    p2.Dump();
    p3.Dump();
}
class Person{}
class Student : Person{}
class Teacher : Person{}

上面的代码涉及到了另一个问题:装箱(值类型->引用类型)和拆箱(引用类型->值类型)

其中装箱:

object obj = 123;

其中拆箱:

void Main()
{
    object obj = 123;        //装箱
    int num = (int)obj;        //拆箱
}

频繁装箱和拆箱会影响性能(涉及到堆栈的内存分配),

但是装拆箱的目的其实是提高代码(尤其是方法参数)的灵活性

时间: 2024-08-29 11:28:53

变量与类型转换的相关文章

变量的类型转换

变量的类型转换采用以下两种方式: 隐式转换:从类型A到类型B可以在所有情况下进行(相当于不同类型变量的赋值),执行转换的规则非常简单,可以让编译器执行转换. 显示转换:从类型A到类型B的转换只能在某些情况下进行,直行转换的规则比较麻烦,应进行某种类型的转换. 隐式转换:val1 =  val2; class Program { static void Main(string[] args) { ushort destinationvar; char sourcevar = 'a'; destin

JS 数据类型转换-转换函数、强制类型转换、利用js变量弱类型转换

1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串.parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数字:如果不是,该方法将返回NaN,不再继续执行其他操作.但如果该字符是有效数字,该方法

JavaScript -- 时光流逝(一):数据类型,变量,类型转换,函数

JavaScript -- 知识点回顾篇(一):数据类型,变量,类型转换,函数 1. 数据类型 Boolean:值类型,布尔(逻辑)只能有两个值:true 或 false. Number:值类型,JavaScript 只有一种数字类型.数字可以带小数点,也可以不带 string:值类型,字符串可以是引号中的任意文本.您可以使用单引号或双引号 Undefined:只有一个值undefined Null:只有一个值Null Object:对象由花括号分隔.在括号内部,对象的属性以名称和值对的形式 (

Java语法基础---变量数据类型--类型转换

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型.在内存中分配了不同大小的内存空间. 内存中分配内存空间: byte        8位2进制    1个字节 short      16位2进制    2个字节 int        32位2进制    4个字节 long       64位2进制    8个字节 char       16位2进制    2个字节 注意: 1.过大整形时表示长整形的数据long q = 1234567891234L. 后面加标识L,这里才会用8

C#。1 数据类型,常量变量,类型转换

C#. 一.数据类型 1,字符串类型(string) .放入一串字符串,需要用""引起来. 列如: string a ="999"; 2,整型 (int).   4字节 不常用的整型 long 8字节 .short 2字节 . tiny 1字节 例如 : int a = 10; 3,小数型 又称 浮点型 (float,double) float  单精度浮点型  4字节 (不常用) doubl 双进度浮点型  8字节(电脑中默认的浮点型) 列如:float a =

C#变量/数据类型转换/运算符使用

1.变量 命名规则: a 只能是字母(a-z),数字(0-9),下划线(_)b 不能用数字开头c 不能是C#中的关键字 命名规范: a 简短,有语义的单词或组合b 骆驼命名法(从第二个单词开始,首字母大写)myName 使用步骤: a 声明并赋值(例:int age=18)b 使用(输入输出.判断.运算等...)* 先赋值再使用 2.数据类型 整形和非整形:整形:sbyte(有符号的-128~127) byte(0~255 )一个字节8位short(-32768~32767)ushort(0~6

002.变量、类型转换、运算符

1.变量 命名规则: a 只能是字母(a-z),数字(0-9),下划线(_)b 不能用数字开头c 不能是C#中的关键字 命名规范: a 简短,有语义的单词或组合b 骆驼命名法(从第二个单词开始,首字母大写)myName 使用步骤: a 声明并赋值(例:int age=18)b 使用(输入输出.判断.运算等...)* 先赋值再使用 2.数据类型 整形和非整形:整形:sbyte(有符号的-128~127) byte(0~255 )一个字节8位short(-32768~32767)ushort(0~6

PHP笔记2__变量/字符串/类型转换/常量/,,

<?php //可变变量 $a = "ok"; $$a = "fine"; $$$a = "er"; echo $ok; echo "<br>"; echo $fine; ?> <?php //引用变量 //1.只有变量有引用 $a = 123; $b = &$a; echo $b,"<br>"; $b = 321; echo $a,"<br

常量与变量的数据类型转换

python在定义变量时 , 需要指定其数据类型 , 而是根据每次给变量所赋的值决定其数据类型.但也可以使用一组函数对常量和变量进行类型转换. 使用int函数将字符串转换为整数,语法如下: int(x [, base]) x 是待转换字符串 base是可选参数 指定转换的整数进制 默认为10进制 print(int('100', 2)) print(int('100', 16)) # 0 * 16**0 + 0 * 16**1 + 1 * 16**2 = 16 * 16 =256 print(i