博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象/集合初始化器
阅读量:5046 次
发布时间:2019-06-12

本文共 938 字,大约阅读时间需要 3 分钟。

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
list1 = new List
(); list1.Add(new Person() { Name = "小李", Age = 26 }); list1.Add(new Person() { Name = "小方", Age = 23 }); List
list2 = new List
() { new Person (){ Name="小涛",Age=24}, new Person (){ Name="小王",Age=21} };

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

转载于:https://www.cnblogs.com/never-giveUp/p/4056675.html

你可能感兴趣的文章
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
PHP 微信错误状态返回码说明
查看>>
【4.1】Python中的序列分类
查看>>
ubuntu 移动文件
查看>>
Easy Mock
查看>>
看看 Delphi XE2 为 VCL 提供的 14 种样式
查看>>
Python内置函数(29)——help
查看>>
机器学习系列-tensorflow-01-急切执行API
查看>>
SqlServer 遍历修改字段长度
查看>>
Eclipse快捷键:同时显示两个一模一样的代码窗口
查看>>
《架构之美》阅读笔记05
查看>>
《大道至简》读后感——论沟通的重要性
查看>>
JDBC基础篇(MYSQL)——使用statement执行DQL语句(select)
查看>>
关于React中props与state的一知半解
查看>>
java中Hashtable和HashMap的区别(转)
查看>>
关闭数据库
查看>>
webStrom智能提示忽略首字母大小写问题
查看>>
层叠加的五条叠加法则(一)
查看>>
设计模式六大原则(5):迪米特法则
查看>>