C#-初始化器和构造函数初始化器
初始化器分为对象初始化器和集合初始化器。下面一一介绍。
对象初始化器 对象初始化器的作用,简单点说就是可以使我们初始化一个类的代码变得更简洁。比如下面这个类:
class Person { public string Name { get; set; } public int Age { get; set; } public string Address { get; set; } }
我们要初始化它并对它赋值的话通常要这样:
Person person = new Person(); person.Name = "Slark"; person.Age = 100; person.Address = "Xi'an";
这里我们用了一行创建对象语句,加三行赋值语句。这里光person这个变量就出现了4遍,繁琐。用对象初始化器来代替这些操作:
Person person = new Person { Name = "Slark", Age = 100, Address = "Xi'an" };
同样的效果,对象初始化器只用了一行,简洁!可以看到对象初始化器将创建对象和赋值合为一行,其中赋值就是在后面大括号里做的。这里的赋值可以给所有属性赋值,也可以给部分属性赋值。
集合初始化器 既然要讲集合初始化器,那么我们就先来创建一个集合:
ListintList = new List (); intList.Add(1); intList.Add(2); intList.Add(3);
好,这里我们用4行代码创建了一个3个元素的集合。集合初始化器的出现大大减少了我们对这种操作的代码量。其对应的集合初始化器代码为:
ListintList = new List { 1, 2, 3 };
嗯,真的少写了很多。集合初始化器的原理也很简单,就是它默默的为我们调用了List的Add方法依次为我们添加了这3个元素。
这里我们再给一个综合运用集合初始化器和对象初始化器的例子:
List personList = new List{ new Person { Name = "Slark1", Age = 101, Address = "Xi'an1" }, new Person { Name = "Slark2", Age = 102, Address = "Xi'an2" }, new Person { Name = "Slark3", Age = 103, Address = "Xi'an3" } };
代码里用集合初始化器初始化了personList,然后用对象初始化器初始化了3个Person对象实例。
构造函数初始化器
【C#-初始化器和构造函数初始化器】 C#构造函数初始化符可以包含对同一个类的另一个构造函数的调用(使用前面介绍的语法),也可以包含对直接基类的构造函数的调用(使用相同的语法,但应使用base关键字代替this)。初始化符中不能有多个调用。
class Car { private string description; private uint nWheels; public Car(string description, uint nWheels) { this.description = description; this.nWheels = nWheels; public Car(string description) : this(description, 4){ } // etc }
这里,this关键字仅调用参数最匹配的那个构造函数。注意,构造函数初始化器在构造函数之前执行。现在假定运行下面的代码: Car myCar = new Car("Proton Persona"); 在本例中,在带一个参数的构造函数执行之前,先执行带2个参数的构造函数
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- Docker应用:容器间通信与Mariadb数据库主从复制
- 人生感悟记#环境仪器宋庆国成长记#072
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 视频转换器哪种好用()
- NeuVector 会是下一个爆款云原生安全神器吗()
- 操作系统|[译]从内部了解现代浏览器(1)
- 探索免费开源服务器tomcat的魅力
- 机器学习|机器学习 Andrew Ng《Machine Learning》课程笔记1
- 《机器学习实战》高清中文版PDF英文版PDF+源代码下载