C#语言开发团队在C# 3.0中增加了一个名为"对象初始化器"(object initializer)的特性 ,它能初始化一个对象中的所有允许访问的字段和属性。别以为这和你没关系。我们先来看一个你非常熟悉不过的代码。
User operator=new User();
operator.ID=1;
operator.Pwd=1;
operator.Name="操作员"
以前是不是大家都像上面一样写代码。现在c#3.0以后我们有了更简单的方法。
<pre name="code" class="csharp">User operator = new User(ID = 1,
,Name = "操作员",Pwd= 1;);
更方便的我们接着看。用了上面的代码还有一个明显的好处就是。c#3.0以前,如果一个实体中有3个属性,以前我们再给其初始化时,可能由于需要只给一个或两个属性初始化,那么我们在写构造函数的时候就不得不写多个不同参数的构造函数。而现在,我们只需要一句话即可应付不同的初始化情况。
初始化多个对象属性的时候,对象初始化器帮了不少忙。那么初始化多个对象的时候,我们也自然有了集合初始化器。如下。
我们先看一个应用了对象初始化器而还没用集合初始化器的一段程序。
IList<User> users= new List<User>();
users.Add(new User{ID=1,Name="王老师",Pwd=1});
users.Add(new User{ID=2,Name="李老师",Pwd=1});
users.Add(new User{ID=3,Name="马老师",Pwd=1});
应用了集合初始化器之后就更加的简洁了。
IList<User> users= new List<User>{
new User{ID=1,Name="王老师",Pwd=1});
new User{ID=2,Name="李老师",Pwd=1});
new User{ID=3,Name="马老师",Pwd=1});
}
这个初始化器,虽说很简单也很小。但是我们的应用却太频繁了。的确能减少很多繁琐的步骤。其实真正初始化器的意义还不仅仅在此,我们想想,如果没有初始化器,那么最近学过的匿名函数是从哪来蹦出来的。
Var a=new {ID=1,Pwd=1;}
等等!有什么变化?
你看,以前我们要先实例化一个对象,才能给属性赋值。它是必要条件。而现在,显然不是了。