初探Linq局部變量類型
Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq局部變量,包括介紹對(duì)象初始化和集合初始化等方面。
Linq局部變量類型
使用這個(gè)特性,聲明一個(gè)Linq局部變量,它的具體類型是通過初始化表達(dá)式來推斷。這點(diǎn)是通過var 關(guān)鍵詞完成的(這個(gè)使用腳本語言的人應(yīng)該很熟悉,但它們實(shí)際上是有很大區(qū)別的)。我們可以寫出如下的代碼:
- 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>();
注意,這里并不存在無類型的變量,也沒有推遲類型的綁定。編譯器是從右邊的賦值語句來自動(dòng)推斷和聲明變量的類型的,var 關(guān)鍵詞是一個(gè)強(qiáng)類型的變量引用。
對(duì)象初始化和集合初始化
我們繼續(xù)使用上面的Point 類。假設(shè)我們想要這個(gè)類的一個(gè)實(shí)例,我們會(huì)建立對(duì)象并設(shè)置它的屬性,代碼會(huì)是這樣子的:
- Point p = new Point();
- p.X = 0;
- p.Y = 0;
現(xiàn)在,使用對(duì)象初始化,就可以像這樣子來重寫:
- 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à)的長一些的代碼,它依次調(diào)用Add() 方法來在集合里添加元素。以上介紹Linq局部變量。
【編輯推薦】