需安裝 Visual Studio 2005 + LINQ Preview。創建 LINQ Console 應用:
var p1 = new { Name = "A", Price = 3 };
Console.WriteLine($"Name = {p1.Name}\nPrice = {p1.Price}");
// 輸出:Name = A, Price = 3
<Projection>f__0)
.class nested private auto ansi sealed '<>f__0'
extends [mscorlib]System.Object
{
.field private string '_Name'
.field private int32 '_Price'
.property instance string 'Name' { .get ... .set ... }
.property instance int32 'Price' { .get ... .set ... }
}
.property instance string Name()
{
.get instance string AnonTypes.Program/'<>f__0'::get_Name()
.set instance void AnonTypes.Program/'<>f__0'::set_Name(string)
}
類型名包含特殊字符(<>),源碼無法直接引用,保證「源碼層面匿名」。
C:\Program Files\LINQ Preview\Bin\csc.exe
/reference:System.Data.DLinq.dll /reference:System.Query.dll
/out:AnonTypes.exe Program.cs
匿名類型是編譯期類型合成:源碼聲明屬性名/值,編譯器生成完整類型、字段、屬性、方法。運行期為具體類型實例,支持強類型訪問、智能提示、值語義相等。理解其編譯器生成機制,有助於正確跨方法邊界傳遞(泛型推斷/映射 DTO)並避免濫用。