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