C#編譯器已經將ss編譯成了String變數了。而在輸出ss後,再輸入“.”後,會看到將String類型變數的相應方法和屬性也列出來了,因此可以斷定,C#將ss看成了String類型,而不是Object。所以使用var定義變數同時可以擁有Object和強型別的優點。在C#3.0中提供了一種新的聲明變數的方式,這就是var。通過這個關鍵字,在聲明變數時就無需指定類型了,變數類型是在初始化時由編譯器確定的。
一、用var定義變數
在C#3.0中提供了一種新的聲明變數的方式,這就是var。通過這個關鍵字,在聲明變數時就無需指定類型了,變數類型是在初始化時由編譯器確定的。代碼如下:
varss="abcd";
MessageBox.Show(ss.GetType().ToString());
上面的代碼將顯示System.String,從而證明 不過大家不要將var看成是javascript的var,它們的區別是,javascript是弱類型的語言,而且javascript中的變數(也包括用var聲明的變數)可以變換類型,如下面的javascript所示:
vars="abcd";
s=3;
alert(s);
上面的代碼第一次給s賦了一個字串,而第二行代碼又給賦了一個整數。這樣的代碼在javascript中沒有任何問題。但在C#3.0中,var變數一但被初始化,確定類型後,就無法改變類型了。如下面的代碼是無法編譯通過的:
varss="abcd";
ss=44;
綜上所述,在使用var定義變數時有以下四個特點:
1. 必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:
vars;
s=“abcd”;
2. 一但初始化完成,就不能再給變數賦與初始化實值型別不同的值了。
3. var要求是局部變數。
4. 使用var定義變數和object不同,它在效率上和使用強型別方式定義變數完全一樣。但筆者建議如果事Crowdsourced Security Testing道變數的類型,盡量使用強型別方式來聲明變數。否則,就會造成由於大量使用var,而使得開發人員很難斷定某個變數是什麼類型。這樣不利於程式的維護和升級。