码迷,mamicode.com
首页 > 其他好文 > 详细

对象/集合初始化器

时间:2014-10-28 15:22:00      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   sp   strong   div   on   

1. 对象初始化器

    对象的初始化工作一般都是在其构造函数中进行的,但是有些时候,需要我们手动的来进行一些赋值操作,比如

            //传统的方式
            Person p1 = new Person();
            p1.Name = "小李";
            p1.Age = 23;

            //对象初始化器
            Person p2 = new Person() {Name="小明",Age=26 };

   反编译代码:

   bubuko.com,布布扣

       我们可以看出出来,对象初始化器的作用:创建一个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}
            };

bubuko.com,布布扣

反编译后的结果可知,编译后的IL也是编译器生成临时集合对象,然后调用其Add方法加入集合元素,最后将临时对象赋值给我们创建的对象

对象/集合初始化器

标签:style   blog   http   color   使用   sp   strong   div   on   

原文地址:http://www.cnblogs.com/never-giveUp/p/4056675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!