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」)。
雖然這種保護機制讓人很煩,不過爲了養成良好的變成習慣,仍是應該使用變臉的時候,要在聲明變量的同時進行初始化,以避免給本身帶來沒必要要的麻煩。