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必须有一个无参构造函数。