变量的声明及初始化
1 //声明变量的同时进行初始化 2 int intVariable = 10; 3 4 //先声明一个变量,然后再初始化 5 string strVariable; 6 strVariable = "Variable"; 7 8 //同时声明多个变量并初始化,其中变量的类型必须一致 9 int intVarialbe1 = 10, intVariable2 = 20, intVariable3 = 30; 10 string strVariable1 = "Variable1", strVariable2 = "Variable2", strVariable3 = "Variable3"; 11
错误尝试:如果声明了变量而没有为其赋初始值,会出现什么情况呢?
例 2-1:我们通过下边的代码进行测试
1 //声明变量,不进行初始化
2 int intVariable;
3 string strVariable;
4
5 //引用未进行初始化的变量
6 Console.WriteLine(intVariable.ToString());
7 Console.WriteLine(strVariable);
代码下方出现波浪线,可以看到下图的错误提示:
图 2‑1 变量未赋初始值时的错误
编译时,错误列表中的错误提示:
图 2‑2 错误列表中的错误提示
为什么必须为声明的变量进行初始化呢?
例 2-1 中,由于在操作中引用了没有进行初始化的变量,而导致了错误的产生。变量的初始化是C#强调安全性的方式之一,C#编译器会将未初始化的变量当作错误看待,这可以防止我们无意的从其他程序遗留下来的内存中获取垃圾值。
为了防止使用未初始化的变量,导致问题的产生,C#通过两种方式来解决:
- 方法中的局部变量必须在代码中显式初始化,如果编译器检测到局部变量在初始化之前就使用了它的值,就会产生错误。(需要强调的是,这里说的是局部变量)
- 类或结构中的字段,不管是静态的还是非静态的,这些变量如果没有显式初始化,在调用其构造函数时,就为其设置了默认值(int、double、bool等值类型的变量初始化为它的默认值;数组、集合等引用类型的变量初始化为Null)。
表格 2‑1 值类型变量的默认值
变量类型 |
默认值 |
sbyte,byte,short,ushort,int,uint,long,ulong |
0 |
char |
'\0' |
float |
0.0f |
double |
0.0d |
decimal |
0M |
bool |
false |
enum |
0 |