您的位置:首页 > 编程语言 > C#

C#-初始化器和构造函数初始化器

2016-12-27 19:56 183 查看
初始化器分为对象初始化器和集合初始化器。下面一一介绍。


对象初始化器

对象初始化器的作用,简单点说就是可以使我们初始化一个类的代码变得更简洁。比如下面这个类:

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" };


同样的效果,对象初始化器只用了一行,简洁!可以看到对象初始化器将创建对象和赋值合为一行,其中赋值就是在后面大括号里做的。这里的赋值可以给所有属性赋值,也可以给部分属性赋值。


集合初始化器

既然要讲集合初始化器,那么我们就先来创建一个集合:

List<int> intList = new List<int>();
intList.Add(1);
intList.Add(2);
intList.Add(3);


好,这里我们用4行代码创建了一个3个元素的集合。集合初始化器的出现大大减少了我们对这种操作的代码量。其对应的集合初始化器代码为:

List<int> intList = new List<int> { 1, 2, 3 };


嗯,真的少写了很多。集合初始化器的原理也很简单,就是它默默的为我们调用了List的Add方法依次为我们添加了这3个元素。

这里我们再给一个综合运用集合初始化器和对象初始化器的例子:

List<Person> personList = new List<Person>
{
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#构造函数初始化符可以包含对同一个类的另一个构造函数的调用(使用前面介绍的语法),也可以包含对直接基类的构造函数的调用(使用相同的语法,但应使用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个参数的构造函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: