程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Linq學習(2) .NET 3.X新特性回顧(3)

Linq學習(2) .NET 3.X新特性回顧(3)

編輯:關於C語言

構造實例對其初始化。var t0 = new Test1 { String1 = "http://xianfen.Net", Int1 = 0 };
var t1 = new Test1(0) { String1 = "http://xianfen.Net" };

IL內部對其初始化首先調用無參構造方法,然後調用的是屬性的set或設置公共字段來實現的。

因此使用省略構造方法的對象初始化器是必須含有無參構造方法。

對象初始化器也可以顯式調用構造方法,執行順序是構造方法優先執行。

集合初始化器(Collection Initializers)

集合初始化器可以初始化List<T>等集合。

如下示例:

public class Test1
{
  public string String1 { get; set; }
  public int Int1 { get; set; }
}
List<Test1> l = new List<Test1>
{
  new Test1{ String1 = "http://xianfen.Net", Int1 = 0 },
  new Test1{ String1 = "http://www.xianfen.Net", Int1 = 1 },
  new Test1{ String1 = "http://www.bianceng.cn", Int1 = 2 }
};

IL代碼:

.locals init ([0] class [mscorlib]System.Collections.Generic.List`1<class CS30NEW.Test1> l,
      [1] class [mscorlib]System.Collections.Generic.List`1<class CS30NEW.Test1> '<>g__initLocal0',
      [2] class CS30NEW.Test1 '<>g__initLocal1',
      [3] class CS30NEW.Test1 '<>g__initLocal2',
      [4] class CS30NEW.Test1 '<>g__initLocal3')

從IL代碼可以看出,編譯器生成了局部變量,然後添加到集合中。

匿名類型(Anonymous Types)

匿名類型是最有爭議的特性,說白了就像雞肋,因為使用匿名類型有很多限制。

示例:

var t3 = new { String1 = "http://xianfen.Net", Int1 = 0 };

其類型為:

t3.GetType().ToString()結果是:<>f__AnonymousType0`2[System.String,System.Int32]

檢查IL可看到:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved