由于C#不知参数的默认值,but constructor initializers allow one constructor to call another construcor.
所以经常出现一下这种形式的代码:
以上形式的代码完全ok!!但是一下形式的代码会降低程序的性能,因为the compiler adds codes to perform several functions on you behalf in constructors.It add statements for all variable initializers.
所以经常出现一下这种形式的代码:
public class MyClass
{
private ArrayList _col;
private string _name;
public MyClass():this(0,"")
{
}
public MyClass(int initialcount):this(initialcount,"")
{
}
public MyClass(int initialcount,string name)
{
//编译器只有在这里添加初始化语句
if(initalcount > 0)
_col = new ArrayList(initialcount);
else
_col = new ArrayList();
_name = name;
}
}
{
private ArrayList _col;
private string _name;
public MyClass():this(0,"")
{
}
public MyClass(int initialcount):this(initialcount,"")
{
}
public MyClass(int initialcount,string name)
{
//编译器只有在这里添加初始化语句
if(initalcount > 0)
_col = new ArrayList(initialcount);
else
_col = new ArrayList();
_name = name;
}
}
public class MyClass
{
private ArratList _col;
private string _name;
public MyClass()
{
//编译器会自动添加额外的初始语句
commonConstructor(0,"");
}
public MyClass(int initial)
{
//编译器会自动添加额外的初始语句
commonConstrutor(initial,"");
}
public void commonConstrucot(int initial,string name)
{
//编译器会自动添加额外的初始语句
//处理代码
}
}
{
private ArratList _col;
private string _name;
public MyClass()
{
//编译器会自动添加额外的初始语句
commonConstructor(0,"");
}
public MyClass(int initial)
{
//编译器会自动添加额外的初始语句
commonConstrutor(initial,"");
}
public void commonConstrucot(int initial,string name)
{
//编译器会自动添加额外的初始语句
//处理代码
}
}