在类的构造函数重载中,一般都是这么写的。
public class A { int i = 12; int ii; string str = "h"; string strr; public A() { i=12; str="h"; } public A(int x) { i=x; } }
但是生成出来的并不是这样子的,生成出来的是这样的:
public class A { int i = 12; int ii; string str = "h"; string strr; public A() { //以下注释的内容是编译器生成的操作: //i = 0; //ii = 0; //str=null; //strr = null; //调用基类(object类)的构造函数 i=12; str="h"; } public A(int x) { //以下注释的内容是编译器生成的操作: //i = 0; //ii = 0; //str=null; //strr = null; //调用基类(object类)的构造函数 i=x; } }
这会造成代码的膨胀。。。解决方案是下面的这段代码
public class A { int i = 12; int ii; string str = "h"; string strr; public A() { i=12; str="h"; } public A(int x):this()//按照此方法重载 { i=x; } }