在寫程序的時候,往往會出現(xiàn)為一個類型提供不同場景的構造函數(shù),可能大多構造函數(shù)比較相似,而C#中又不允許缺省參數(shù),因此構造函數(shù)的編寫無疑是一個重復工作。但是使用Copy和Paste來完成構造函數(shù)的編寫,有時候很難達到統(tǒng)一,尤其是當成員發(fā)生變化的時候。因此比較常見的替換方法就是為構造函數(shù)提供一個統(tǒng)一的成員函數(shù)來完成初始化工作。
例如:
public class MyClass
{
private int _Age;
private string _Name;
public MyClass( string Name)
{
InitMember( Name, 20 );
}
public MyClass( string Name, int Age )
{
InitMember( Name, Age );
}
///
/// Init class members
///
///
///
private void InitMember( string Name, int Age )
{
_Age = Age;
_Name = Name;
}
}
不過,在C#中提供了更為簡明的方法,就是在構造函數(shù)初始化語句中調用另一構造函數(shù),那么上面的形式可以改寫為如下這樣。
public class MyClass
{
private int _Age;
private string _Name;
public MyClass( string Name):this( Name, 20 )
{}
public MyClass( string Name, int Age )
{
_Age = Age;
_Name = Name;
}
}
對于這兩者來說,執(zhí)行效率沒有太大差別,但從代碼質量而言,后者要好很多,而且會使代碼看起來更清晰。
例如:
public class MyClass
{
private int _Age;
private string _Name;
public MyClass( string Name)
{
InitMember( Name, 20 );
}
public MyClass( string Name, int Age )
{
InitMember( Name, Age );
}
///
/// Init class members
///
///
///
private void InitMember( string Name, int Age )
{
_Age = Age;
_Name = Name;
}
}
不過,在C#中提供了更為簡明的方法,就是在構造函數(shù)初始化語句中調用另一構造函數(shù),那么上面的形式可以改寫為如下這樣。
public class MyClass
{
private int _Age;
private string _Name;
public MyClass( string Name):this( Name, 20 )
{}
public MyClass( string Name, int Age )
{
_Age = Age;
_Name = Name;
}
}
對于這兩者來說,執(zhí)行效率沒有太大差別,但從代碼質量而言,后者要好很多,而且會使代碼看起來更清晰。