C#会对类字段(成员对象)的直接初始化采用的是假初始化。
即:在编译期将其内联到类的构造函数中进行。这样做的好处是,提高了程序的运行速度。但如果类存在多个构造函数,这种内联带来的就是编译后文件的成倍增长(同一个字段的初始化会在编译时写道每个构造函数中)。
解决的办法是定义一个单独的构造函数,将字段的初始化放到其中。并在其它的构造函数中现行调用这个构造函数。
class Test
{
private string _StrA;
private Test()
{
_StrA = string.Empty;
}
public Test(string test)
: this()
{
.......;
}
}
附:
构造函数的工作步骤,
1、为类分配内存空间。
2、初始化附加成员列表、索引。
3、对类的成员分别进行初始化。