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