同一程序集中,屬性名、類型、順序完全一致的匿名類型初始化器,編譯器只生成一個內部類型,所有實例共用該類型。
var p1 = new { Name = "A", Price = 3 };
var p2 = new { Name = "A", Price = 3 };
// ILDASM 顯示:僅有一個 f__0 類型,p1/p2 均為其實例
修改屬性集合或順序,編譯器生成不同類型:
var p1 = new { Name = "A", Price = 3 };
var p2 = new { Name = "A" }; // 缺少 Price
// ILDASM 顯示:f__0 和 f__1 兩個獨立類型
理解此機制,有助於正確設計跨方法/程序集邊界的數據傳遞策略(映射到 DTO/Record)。