object,編譯器生成密封類。<>f__AnonymousType0`2),源代碼不可訪問。gname.Age = 26編譯報錯。private var x;非法)。
var a = new { Name = "yyao", Age = 24 };
var b = new { Name = "yyao", Age = 24 };
Console.WriteLine(a == b); // False:引用比較
Console.WriteLine(a.Equals(b)); // True:逐屬性值比較
Console.WriteLine(a.GetHashCode() == b.GetHashCode()); // True:基於屬性計算
結論:匿名類型重寫Equals/GetHashCode實現值語義,適合作為字典鍵、集合元素、LINQ分組鍵。
// 編譯錯誤:var 只能出現在局部變量聲明中
// private var _field;
// private var _prop = new { Name = "test" };
必須配合var在方法內使用,跨方法傳遞需用object或dynamic(失去強類型優勢)。
Distinct、GroupBy、Dictionary鍵。匿名類型是C# 3.0為LINQ量身打造的特性,理解其編譯器生成機制與語義邊界,能避免濫用帶來的維護陷阱。