C#关于构造函数初始化器的使用
作者:网络转载 发布时间:[ 2016/3/11 13:59:24 ] 推荐标签:测试开发技术 .NET
有时,在一个类中有几个构造函数,以容纳某些可选参数,这些构造函数都包含一些共同的代码。
例如,下面的情况:
class Car {
private string description;
private uint nWheels;
public Car(string model, uint nWheels)
{
this.description = model;
this.nWheels = nWheels;
}
public Car(string description)
{
this.description = description;
this.nWheels = 4;
} // etc.
}
这两个构造函数初始化了相同的字段,显然,好把所有的代码放在一个地方。C#有一个特殊的语法,称为构造函数初始化器,可以实现此目的:
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个参数的构造函数(但在本例中,因为带一个参数的构造函数没有代码,所以没有区别)。
C# 构造函数初始化符可以包含对同一个类的另一个构造函数的调用(使用前面介绍的语法),也可以包含对直接基类的构造函数的调用(使用相同的语法,但应使用 base关键字代替this)。初始化符中不能有多个调用。 在C#中,构造函数初始化符的语法类似于C++中的构造函数初始化列表,但C++开发人员要注意,除了语法类似之外,C#初始化符所包含的代码遵循完全不 同的规则。可以使用C++初始化列表指定成员变量的初始值,或调用基类构造函数,而C#初始化符中的代码只能调用另一个构造函数。这要求C#类在构造时 遵循严格的顺序,但C++没有这个要求。这个问题详见第4章,那时会看到,C#强制遵循的顺序只不过是良好的编程习惯而已。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11