C#变量初始化是C#强调安全性的另一个例子。简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待。
1.在C#中,变量的声明格式为:
数据类型 变量名;
2.变量的赋值格式为:
变量名 = 数据;
3.一般情况下,都是先声明后赋值,或者在声明变量的同时就赋初值。然而有些时候在程序的开发设计中,往往忘了要赋初值(即进行初始化),这样就会导致在程序的设计中,会出现意想不到的错误。
解释:当我们在声明一个变量的时候,此时会进行内存分配(比如int i;此时会在堆栈上分配4个字节),也就是在进行变量声明时会进行内存的分配,以保存该类型对应的值。至于我们声明一个变量后不进行赋值便使用,此时是编译器会报错,错误提示是:使用了一个未赋值的变量。在.NET中有一个概念应该是大家都很熟悉的,那就是类型安全。何为类型安全,这个提问应该说是个最好的例证。如果有注意,在.NET编译器中,对未赋值的变量进行使用的时候,编译器会提示这是个错误,而在其他语言编译器中对未赋值变量的使用提示的是警告。
4.C#中使用两种方式保证类型安全:
1)变量是类或者结构中的字段,如果没有进行显示赋值,在默认状态下创建相应变量时,其值为对应类型默认值。
2)方法的局部变量必须在代码中显示初始化,之后才可以在语句中进行使用。初始化不是在声明变量时进行的,编译器会通过检查所有可能的路径,如果检测到局部变量在初始化之前就使用了它的值,编译器就会产生错误。
1 public static void Main() 2 { 3 int a; 4 Console.WriteLine(a); 5 return; 6 }
以上代码在编译器中报:Use of unassigned local variable class="string">'d' (使用了未赋值的局部变量“a”)。
虽然这种保护机制让人很烦,不过为了养成良好的变成习惯,还是应该使用变脸的时候,要在声明变量的同时进行初始化,以免给自己带来不必要的麻烦。