C#3.0新特性――隱含型別區域性變數和匿名型別

iDotNetSpace發表於2008-09-08
C#3.0引進新關鍵字var,它是一個型別,可以用來宣告區域性變數。


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtvar I = 1; //int型別
var j = ”reallypride”; //string型別
var k = new[] { 1, 2, 3, 4 }; //int[]型別
var x; //錯誤,必須初始化
var y = null; //錯誤,不可以為空

使用var變數要點:
1.         使用var宣告區域性變數,編譯器會根據後面的初始化表示式自動推斷變數的型別,這個型別是強型別。
2.         var變數在宣告時必須初始化,不可以為空,且編譯時可以推斷其型別。初始化後變數只能儲存這種型別。
3.         陣列也可以作為var型別。
匿名型別
匿名型別允許定義行內型別,不須顯示宣告型別。常和var一起使用。如

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtvar p1 = new { name = ”reallypride”, age = 23 };
var p2
= new { name = “jingxuan”, age = 23
};

編譯器會自動定義一個包含nameage屬性的類。p1p2結構相同,是同一個類的例項。我們再定義一個變數:


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtvar p3 = new { age = 23, name = “reallypride” };

編譯器會新建一個新的類,也就是p3p1,p2不是同一個類的例項,因為p3宣告屬性的位置不相同。
{ }是匿名初始化器。
如果要定義陣列,可以這樣定義:

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtvar intArray = new[] { 1, 2, 3, 4 };
var strArray
= new
[] { “a”, “b”, “c” };
var someTypeArray
= new[] { new { name = “reallypride”, age = 23 }, new { name = “jingxuan”, age = 23 } };

匿名型別要點:
1. 可以使用new關鍵字呼叫匿名初始化器建立一個匿名型別。
2. 匿名型別直接繼承自System.Object
3. 匿名型別的屬性是編譯器根據初始化器自動推斷。

或許有人會覺得,有了var這個關鍵字後,其它的型別關鍵字都變成多餘的了。
其實var是簡化了我們的程式設計,讓我們不用再因為定義一個變數而需要寫兩次它的型別。
如定義一個User類的例項,以前的方法我們要這樣定義:

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtUser user=new User();

而現在我們可以這樣定義:

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtvar user=new User();

我們可以把更多的時間用在軟體功能的實現上而不是敲程式碼上。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-442320/,如需轉載,請註明出處,否則將追究法律責任。

相關文章