创建匿名类型

由于未命名匿名类型,因此必须隐式键入这些类型的变量(var)。

var anon = new { Foo = 1, Bar = 2 };
// anon.Foo == 1
// anon.Bar == 2

如果未指定成员名称,则将它们设置为用于初始化对象的属性/变量的名称。

int foo = 1;
int bar = 2;
var anon2 = new { foo, bar };
// anon2.foo == 1
// anon2.bar == 2

请注意,只有在匿名类型声明中的表达式是简单的属性访问时,才能省略名称; 对于方法调用或更复杂的表达式,必须指定属性名称。

string foo = "some string";
var anon3 = new { foo.Length };
// anon3.Length == 11
var anon4 = new { foo.Length <= 10 ? "short string" : "long string" };
// compiler error - Invalid anonymous type member declarator.
var anon5 = new { Description = foo.Length <= 10 ? "short string" : "long string" };
// OK