对象初始化器和集合初始化器

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;}

等等!有什么变化?

你看,以前我们要先实例化一个对象,才能给属性赋值。它是必要条件。而现在,显然不是了。

时间: 2025-01-08 06:45:25

对象初始化器和集合初始化器的相关文章

C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法

1.自动属性(Auto-Implemented Properties) //以前的写法 .net2.0 private string _userName; public string UserName { get { return _userName; } set { _userName= value; } } //现在 只适合3.5以上 public string_userName {get;set;} 2.隐式类型var 它是在编译已经能确定变量的类型,是根据后面的值自动推断类型,编译时把推

C#4.0语法糖之第三篇: 参数默认值和命名参数 对象初始化器与集合初始化器

今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完善以及自我提高,给各位园友们带来更好,更高效的文章. 废话就说到这里,下面正式进入我们的今天的C#4.0语法糖,今天给大家分享一下参数默认值.命名参数.对象初始化器和集合初始化器. 参数默认值和命名参数:方法的可选参数是.net 4.0最新提出的新的功能,对应简单的重载可以使用可选参数和命名参数混合

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re

对象初始化器与集合初初始化器

对象初始化器的结果: 对象初始化器的优点: 1.只需要一条语句就可以完成对象初始化工作. 2.无需为简单对象提供构造函数. 3.无需为初始化不同属性而为类提供多个构造函数. 集合初始化的优点: 1.集合初始化已声明的方式初始化集合,具有更好的代码可读性.

对象/集合初始化器

1. 对象初始化器 对象的初始化工作一般都是在其构造函数中进行的,但是有些时候,需要我们手动的来进行一些赋值操作,比如 //传统的方式 Person p1 = new Person(); p1.Name = "小李"; p1.Age = 23; //对象初始化器 Person p2 = new Person() {Name="小明",Age=26 }; 反编译代码: 我们可以看出出来,对象初始化器的作用:创建一个person类型的临时对象<>g_init

集合初始化器、类初始化器、匿名类

1:集合初始化器集合添加数据的两种方法第一种方法:第二种方法:利用集合初始化器2:对象初始化器1.当一个类中有构造方法,我们可以用构造方法来进行实例化一个对象2.当一个类中没有任何的构造方法,这个时候我们就可以利用对象初始化器进行实例化一个对象3:匿名类 原文地址:http://blog.51cto.com/11871779/2087253

自定义集合初始化器

对int类型集合初始化,这样写: static void Main(string[] args) { var list = new List<int> {0, 1}; foreach (var item in list) { Console.WriteLine(item); } Console.ReadKey(); } 对键值对集合初始化,这样写: static void Main(string[] args) { var dic = new Dictionary<string, str

隐式类型、对象集合初始化、匿名类型

隐式类型和对象集合初始化器是在C# 3.0中引入的. 1 隐式类型 var关键字,主要还是编译器根据变量的值来推断其类型. 1.1隐式类型的局部变量 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var stringvariable="learning hard"; 6 stringvariable=2; 7 } 8 } 其实当你把鼠标放在var上面的时候,还是可以看到其类型的. 使用隐式类型时有一些限制,包括一

磁盘必须经过初始化,逻辑磁盘管理器才能访问——笔记本硬盘作为移动硬盘使用时遇到的问题

1. 问题描述 把笔记本电脑的硬盘拆出来,套上一个网上买的移动硬盘盒,就是一个移动硬盘了. 我的新的"移动硬盘"在接上别的电脑的时候,无法被识别,如下图. 显示:磁盘需要经过初始化,逻辑磁盘管理器才能访问. 硬盘中原本有数据,不能直接初始化. 2. 原因 我的情况是,之前在笔记本上的BIOS设置中,设置了HDD USER PASSWORD. 这就造成了这个硬盘不能被其他电脑访问. 在此之前,一直以为BIOS设置只是存在于主板上呢,而不会实际修改硬盘数据,确实误解. 3. 解决 把硬盘装