2012-10-14 72 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(),从我测试的一切工作正常。谢谢,这个技巧会为我节省很多时间:) –