2012-10-14 236 views
0

我必須有很多類的屬性,並且爲一個字段創建另一個構造函數比繼承類更困難。C#繼承構造函數

比如我有一個主costructor和一個構造函數帶有一個參數類

public class mySampleClass 
{ 
    //properties 
    public string Default{get;set;} 

    public mySampleClass() 
    { 
     // fill all properties with default values 
     Default = "First"; 
    } 

    public mySampleClass(string value) 
    { 
     // i want here to use default constructor and just manipulate some property with 'value' 
     value = Default; // value = First 
    } 
} 

是否有可能第2構造繼承從第一個構造函數的所有默認屬性和附加價值只是處理一些數據,或者我必須再次構建第二個構造函數的所有默認值?

回答

9

目前尚不清楚你所說的「繼承所有默認屬性」的意思,但你可以讓第二個構造呼叫第一個是這樣的:

// Class name fixed to comply with conventions 
public MySampleClass(string value) : this() 
{ 
} 

通常情況下,然而,你做的事情倒過來:使構造與較少參數調用與參數的構造函數,只留下最具體的構造做任何工作:

public MySampleClass() : this("default value") 
{ 
    // Empty 
} 

public MySampleClass(string value) 
{ 
    // Assign values to properties here 
} 

這通常避免了在無參數構造函數中設置默認值,然後在另一箇中覆蓋它。

+0

與:this(),從我測試的一切工作正常。謝謝,這個技巧會爲我節省很多時間:) –