由于构造函数重载的原因,你在类中声明的成员变量,很容易忘记在新的重载构造函数中初始化,所以建议你在声明时就初始化之。Initializers(类构造器)会在基类的构造函数执行前执行你声明的成员变量的初始化。
但也有三种例外情况
- 将成员变量初始化为 0或null时,由于.net运行机制在运行时会默认将所有未付值的对象默认设置为0或null,所以没有必要再做一次赋值来做无用的事。
- 你要多次为同一成员变量初始化的时候,如implicit field隐式字段
public class MyClass2
{
// declare the collection, and initialize it.
private List<string> labels = new List<string>();
MyClass2()
{
}
MyClass2(int size)
{
labels = new List<string>(size);//多次初始化了 label,因为之前的字段声明会在构造器前执行
}
}
//书上建议如下初始化隐式字段
public class MyClass2
{
// declare the collection, and initialize it.
private List<string> labels;
MyClass2()
{
labels = new List<string>();
}
MyClass2(int size)
{
//这里为什么写了两次初始化?没看懂?个人觉得是笔者写错了 :)
labels = new List<string>();
labels = new List<string>(size);
}
}
- 当你需要在初始化时,在类的内部处理异常的时候,你需要去做