首页 > 代码库 > 对象/集合初始化器

对象/集合初始化器

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方法加入集合元素,最后将临时对象赋值给我们创建的对象

对象/集合初始化器