var关键字,它用于表示隐式类型化的变量。var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承自Object且没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。如果需要一个对象包含某个人的姓氏、中间名和名字,则声明如下:
var captain = new
{
FirstName = "James",
MiddleName = "T",
LastName = "Kirk"
};
这 会 生成 一个 包含 FirstName、 MiddleName 和 LastName 属性 的 对象。 如果 创建 另一个 对象, 如下 所示:
var doctor = new
{
FirstName = "Leonard",
MiddleName = string. Empty,
LastName = "McCoy"
};
那么captain和doctor的类型就相同。例如,可以设置captain=doctor。只有所有属性都匹配,才能设置captain=doctor。
如果所设置的值来自于另一个对象,就可以简化初始化器。如果已经有一个包含FirstName、MiddleName和LastName属性的类,且有该类的一个实例(person),captain对象就可以初始化为:
var captain = new
{
person. FirstName,
person. MiddleName,
person. LastName
};
person对象的属性名应投射到新对象名captain,所以captain对象应有FirstName、MiddleName和LastName属性。这些新对象的类型名未知。编译器为类型“伪造”了一个名称,但只有编译器才能使用它。我们不能也不应使用新对象上的任何类型反射,因为这不会得到一致的结果。