1 class MyVar { 2 /* 3 * 基于安全的考虑,c#变量的初始化有一定的要求 4 * 1.所有的局部变量在被显示的初始化之前,都会被编译器当作未初始化,然后抛出编译期出错; 5 * 2.所有的字段级变量被编译器初始化为所属类型中等价于0的值.如布尔型的初始化为false,数值型的初始化为 6 或者0.0,所有引用类型都初始化为null. 7 * */ 8 private string Name; 9 public void SaySomthing() { 10 string info; 11 Console.WriteLine(info); 12 } 13 /* 14 * 上面的代码中,Name是字段级变量,info是局部变量 15 * 在编译的时候就会报错.(使用了未赋值的info) 16 * 因为局部变量在使用时是必须要赋值的,而字段级的变量可以被编译器自动初始化. * 17 */ 18 /* 19 * 各种数据类型的默认值 20 * 整型的都返回0 21 * ushort 0 22 * ulong 0 23 * uint 0 24 * struct 整型的0,引用型的null 25 * short 0 26 * sbyte 0 27 * long 0 28 * int 0 29 * float 0.0F 30 * enum 枚举类型下标为0的元素 31 * double 0.0D 32 * decimal 0.0M 33 * char '\0' 34 * byte 0 35 * bool flase 36 */ 37 /* 38 从C#3.0开始,引入了var关键字,编译器可以通过它的初始值来判断具体类型. 39 * 根据上面的综述,var只能用于局部变量的声明,不能用于字段级别的声明,并且var声明的变量必须要有初始值,这样编译器才能判断变量的类型. 40 */ 41 }