首页 > 代码库 > 对象/集合初始化器
对象/集合初始化器
1. 对象初始化器
对象的初始化工作一般都是在其构造函数中进行的,但是有些时候,需要我们手动的来进行一些赋值操作,比如
//传统的方式 Person p1 = new Person(); p1.Name = "小李"; p1.Age = 23; //对象初始化器 Person p2 = new Person() {Name="小明",Age=26 };
反编译代码:
我们可以看出出来,对象初始化器的作用:创建一个person类型的临时对象<>g_initLocal0,然后把该临时对象赋值给我们已经创建的对象p2,因此CLR底层并没 有为对对象初始化器做任何附加操作,这些工作都是c#编译器完成了。
从IL代码中,我也可以看出来,这两种初始化方式最终都编译成相同的IL代码,只不过使用对象初始化器,编译器创建了一个临时的对象
2 集合初始化器
List<Person> list1 = new List<Person>(); list1.Add(new Person() { Name = "小李", Age = 26 }); list1.Add(new Person() { Name = "小方", Age = 23 }); List<Person> list2 = new List<Person>() { new Person (){ Name="小涛",Age=24}, new Person (){ Name="小王",Age=21} };
反编译后的结果可知,编译后的IL也是编译器生成临时集合对象,然后调用其Add方法加入集合元素,最后将临时对象赋值给我们创建的对象
对象/集合初始化器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。