0

我有许多类属性,并且只为一个字段创建另一个构造函数比继承之类的更难。

例如,我有一个带有一个主构造函数和一个带有一个参数的构造函数的类

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
    }
}

第二个构造函数是否可以从第一个构造函数继承所有默认属性并仅从附加值中操作一些数据,或者我必须再次为第二个构造函数构建所有默认值?

4

1 回答 1

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
}

这通常避免在无参数构造函数中设置默认值,然后在另一个构造函数中覆盖它。

于 2012-10-14T19:05:01.330 回答