C#语言的新特性:对象初始化器(Object Initializers)

Posted on 2009-08-12 11:31 yuanl 阅读(...) 评论(...) 编辑 收藏
C#语言的新特性:对象初始化器(Object Initializers)

.NET框架中的类型非常依赖于属性的使用。当生成对象实例和使用新的类型时,写出象下面这样的编码是非常常见的情形:

   Person person = new Person();
   
person.FirstName "Scott";
   
person.LastName "Guthrie";
   
person.Age 32;

你 有没有想要把这样的编码简化过(也许将其安排在一行上)?使用Orcas中的C#和VB语言编译器的话,你现在可以利用一个称为“对象初始化器 (object Initializers)”的“语法甜头(syntactic sugar)”语言特性来做些简化,将上述代码重写为:

  Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 };

然后,编译器就会自动地生成合适的属性setter代码,保持跟前面较冗长的代码例子同样的语意。

除 了在初始化类时设置简单的属性值外,对象初始化器特性也允许我们设置更复杂的嵌套(nested)属性类型。譬如,假如我们在上面定义的每个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
      
}
   }
;

Bart De Smet对使用Orcas三月份CTP版中的对象初始化器时内部发生的情形也作了精彩的描述,你可以在这里阅读他的精彩相关帖子

posts - 16, comments - 10, trackbacks - 0, articles - 5

Copyright © 2019 yuanl
Powered by .NET Core 3.0.0 on Linux