匿名类型是由编译器生成的运行时编译器。在创建匿名编译器时不需要指定名称,但可以写出属性名称和它们的值。编译器会在运行时创建这些属性并为其赋值。
var v = new { PropertyFirst = "first value", PropertySecond = "second value" };
Console.WriteLine(k.PropertyFirst);
匿名类在LINQ查询中很有帮助。它在执行查询时保存了中间结果。
对匿名类型也有一些限制/缺点:
- 匿名类型不能实现接口。
- 匿名类型不能指定任何方法。
- 不能定义静态成员。
- 所有定义的属性必须被初始化。
- 只能定义公共字段。