LINQ查詢中頻繁使用:
MyClass[] objSet = new MyClass[12];
// 直接投影現有屬性,屬性名保留
var vaObj = from obj in objSet select new { obj.Name, obj.Number };
// 重命名投影屬性
var varObj = from vobj in objSet select new { vobj.Name, ID = vobj.Number };
優勢:無需MyClass提供無參構造函數,因構造的是新匿名類型而非MyClass實例。
編譯器自動展開為Add方法調用序列:
public void SetInit()
{
// 簡單值
List digits = new List { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 表達式
List digits2 = new List { 0 + 1, 12 % 3, GetIntNumber() };
// 對象初始化器嵌套
List customers = new List
{
new MyClass { Number = "1111", Name = "yy" },
new MyClass { Number = "2222", Name = "QQ" },
new MyClass { Number = "3333", Name = "qiqi" }
};
}
public int GetIntNumber() => 56;
ICollection<T>並具體化T。null元素(若Add允許):new List { ..., null }; 初始化器本質是編譯器語法糖,編譯後等價於顯式new+多次Add/屬性賦值。優勢在於:
雖非必需特性,但熟練掌握能顯著提升代碼編寫效率與可讀性。