PDC 2005 微軟同步展示 C# 2.0 與 C# 3.0 藍圖。匿名類型作為 LINQ 查詢投影的核心載體首次亮相。
對象初始化器:為對象屬性指定值的語法({ Prop = value })。匿名類型即「源碼無名稱、編譯器根據初始化器生成」的類型。
使用 ILDASM 可見編譯器生成的實際類型結構。
// 源碼
var p1 = new { Name = "A", Price = 3 };
// 編譯器轉化為等價顯式代碼
class __Anonymous1
{
private string _name;
private int _price;
public string Name { get => _name; set => _name = value; }
public int Price { get => _price; set => _price = value; }
}
__Anonymous1 p1 = new __Anonymous1();
p1.Name = "A";
p1.Price = 3;
匿名類型將「定義類型」與「創建實例」合二為一:聲明即定義,用完即走。編譯器自動生成私有字段、公共屬性、構造函數、Equals/GetHashCode/ToString 重寫,極大減少樣板代碼。理解其編譯期生成本質,是正確使用(如跨邊界映射)的前提。