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 |