初探Linq局部變量類(lèi)型
Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq局部變量,包括介紹對(duì)象初始化和集合初始化等方面。
Linq局部變量類(lèi)型
使用這個(gè)特性,聲明一個(gè)Linq局部變量,它的具體類(lèi)型是通過(guò)初始化表達(dá)式來(lái)推斷。這點(diǎn)是通過(guò)var 關(guān)鍵詞完成的(這個(gè)使用腳本語(yǔ)言的人應(yīng)該很熟悉,但它們實(shí)際上是有很大區(qū)別的)。我們可以寫(xiě)出如下的代碼:
- var num = 50;
- var str = "simple string";
- var obj = new myType();
- var numbers = new int[] {1,2,3};
- var dic = new Dictionary<int,myType>();
編譯器會(huì)生成IL中間代碼,就如同我們編譯了下面的代碼:
- int num = 50;
- string str = "simple string";
- myType obj = new myType();
- int[] numbers = new int[] {1,2,3};
- Dictionary<int,myType> dic = new Dictionary<int,myType>();
注意,這里并不存在無(wú)類(lèi)型的變量,也沒(méi)有推遲類(lèi)型的綁定。編譯器是從右邊的賦值語(yǔ)句來(lái)自動(dòng)推斷和聲明變量的類(lèi)型的,var 關(guān)鍵詞是一個(gè)強(qiáng)類(lèi)型的變量引用。
對(duì)象初始化和集合初始化
我們繼續(xù)使用上面的Point 類(lèi)。假設(shè)我們想要這個(gè)類(lèi)的一個(gè)實(shí)例,我們會(huì)建立對(duì)象并設(shè)置它的屬性,代碼會(huì)是這樣子的:
- Point p = new Point();
- p.X = 0;
- p.Y = 0;
現(xiàn)在,使用對(duì)象初始化,就可以像這樣子來(lái)重寫(xiě):
- Point p = new Point() { X = 0, Y = 0 };
這個(gè)特性也可以使用在集合上,看看下面這段示例:
- List points = new List {
- new Point { X = 2, Y = 5 },
- new Point { X = 1, Y = -10 },
- new Point { X = 3, Y = 0 }
- };
注意,編譯器會(huì)產(chǎn)生和上面相等價(jià)的長(zhǎng)一些的代碼,它依次調(diào)用Add() 方法來(lái)在集合里添加元素。以上介紹Linq局部變量。
【編輯推薦】