0

多くのクラス プロパティが必要で、1 つのフィールドのためだけに別のコンストラクターを作成することは、継承のようなものよりも困難です。

たとえば、1 つのメイン コンストラクターと 1 つのパラメーターを持つ 1 つのコンストラクターを持つクラスがあります。

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番目のコンストラクターが最初のコンストラクターからすべてのデフォルトプロパティを継承し、追加の値から一部のデータを操作することは可能ですか?それとも、2番目のコンストラクターのすべてのデフォルト値を再度構築する必要がありますか?

4

1 に答える 1

9

「すべてのデフォルト プロパティを継承する」とはどういう意味かは明確ではありませんが、次のように 2 番目のコンストラクターを最初のコンストラクターに呼び出すことができます。

// 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 に答える