技术开发 频道

Orcas中C#语言的新特性


C#和VB语言的新特性:集合初始化器(Collection Initializers)


对象初始化器很棒,它极大地简化了把对象添加到集合的做法。譬如,假如我要把三个人加到一个基于泛型的类型为Person的List集合中去的话,我可以写下面这样的编码:
List<Person> people = new List<Person>(); 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行额外的代码。

但Orcas版中的C#和VB编译器允许我们更进一步,现在同时支持“集合初始化器(collection initializers)”,这允许我们避免要写多个Add语句,省下更多的键盘操作:
List<Person> people = new List<Person> { new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 }, new Person { FirstName = "Bill", LastName = "Gates", Age = 50 }, new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 } };

当编译器遇上上面这样的句法时,它会自动为我们生成象前面的例子一样的集合插入编码。

结语

作为开发人员,我们现在拥有了简明得多的方式来定义对象,对它们初始化,将它们加入集合内。在运行时,其语意,跟今天的较长的版本的语意,是完全一样的(所以你不必担心行为会改变)。但现在你不需输入那么多字符了,你的代码将既干净又简明。

在不远的将来,我将发表更多的博客贴子来讨论Orcas版中更多的语言上的改进,包括扩展方法(Extension Methods),Lambdas和匿名类。然后,我将对LINQ做深入讨论,示范它是如何利用所有这些特性来提供一个非常优雅的方式来查询和与数据交互的。

希望本文对你有所帮助,

Scott

0
相关文章