你是否曾经想过使这一代码变得更加简洁
,也许只用一行就可以实现?使用C# 和VB “Orcas”编译器
,你可以充分利用名为“object Initializers”的“syntactic sugar”语言特征使以上代码简化如下:
以下是引用片段:
Person person = new Person ...{ FirstName="Scott", LastName="Guthrie", Age=32 };
编译器将会自动产生合适的property setter代码来保持与上述详细代码段同样的语义
。 对象初始化器不仅可在初时化类型时设置简单的属性值,而且允许我们随意设置更复杂嵌套的属性类型
。比如,假设我们上述定义的每个Person类型均有一个“Address”类型的Address属性。我们可以用如下代码来创建Person对象并设置其属性:
以下是引用片段:
Person person = new Person ...{
FirstName = "Scott",
LastName = "Guthrie"
Age = 32,
Address = new Address ...{
Street = "One Microsoft Way",
City = "Redmond",
State = "WA",
Zip = 98052
}
};
Collection Initializers——集合初始化器
这一新特性与上述特性基本相同,唯一不同之处在于它作用于集合。对象初始化器功能强大可以帮助开发人员更加容易且简洁的添加对象到集合中。例如,如果我想添加三个people到一个“Person”类型的generics-based List集合中,我们可以用以下代码实现:
以下是引用片段:
List people = new List();
people.Add( new Person ...{ FirstName = "Scott", LastName = "Guthrie", Age = 32 } );
people.Add( new Person ...{ FirstName = "Bill", LastName = "Gates", Age = 50 } );
people.Add( new Person ...{ FirstName = "Susanne", LastName = "Guthrie", Age = 32 } );
在这个例子中仅使用新的对象初时化器特性一条,和C# 2.0编译器相比我们就省去12条额外代码的编写。
C# and VB “Orcas”编译器不仅使我们在对象的声明和初始化方面更加简单,而且支持“collection initializers”可以使我们避免成倍的Add语句,同时节省更多的击键次数:
以下是引用片段:
List people = new List ...{
new Person ...{ FirstName = "Scott", LastName = "Guthrie", Age = 32 },
new Person ...{ FirstName = "Bill", LastName = "Gates", Age = 50 },
new Person ...{ FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
};
当编译器遇到如上语法,它将自动产生集合插入代码,就像如上所示拥有更详尽Add语句的代码段一般。
总之,作为开