LINQ学前准备之对象集合初始化器

对象初始化器为我们提供了更加简洁和方便的对象初始化方法。

假设我们有一个对象Address需要初始化,我们的代码可能是这样的:

 

#region Address Class
public class Address
{
	public string City{get;set;}
	public string State{get;set;}
	public string ZipCode{get;set;}
}
#endregion
 
#region Initial Address
Address address = new Address();
address.City = "New York";
address.Staty = "NY";
address.ZipCode = "10016";
#endregion

显然,如果将这种初始化方法应用于LINQ中是极为不方便且不优雅的。

 

因此微软提供了对象初始化器:

 

#region
Address address = new Address{
				City="New York",
				State="NY",
				ZipCode="10016"
				};
#endregion
 
同样的,对于集合初始化器也采用了类似的方法:
 
List<string> citys = new List<string>{“New York”,"Beijing”};
 
其实,如果我们反编译代码,就会发现,当我们用对象初始化器来初始化对象的时候,C#编译器依旧会生成一个Address类型的局部变量,并调用Address的无参构造函数来初始化他,然后再对其属性进行赋值操作,最后返回这个变量。因此,我们提供的Address必须有一个无参构造函数。

 

posted @ 2012-03-05 20:46  Xiao Tian  阅读(239)  评论(0编辑  收藏  举报