2

コードは次のとおりです。

class Class1
{    
    private Class2 object;

    public Class1(Class2 obj) : this(obj.ToString())
    {
        this.object = obj;
    }
}

より具体的には、その: this部分は何をしますか。

4

4 に答える 4

4

これ:this(obj.ToString)により、文字列パラメーターを使用して定義されたコンストラクターのコンストラクターコードが最初に実行されます。実行されると、コンストラクタコード(設定this.object = obj)が実行されます。

これは、コンストラクタに関するMSDNのページ(最後のサンプルセット)で説明されています。

上記のコードでは、記述されているように、これによりコンパイラエラーが発生することに注意してください。 また、次のようなコンストラクターが必要になります。

public Class1(string str) // Constructor taking a string, though it could be non-public
{
    // Do something with str
}

このコンストラクターを配置すると、コンストラクターが呼び出され、初期化ステップが実行されてから、最初のコンストラクター(セットthis.object)が実行されます。

于 2012-06-22T16:32:58.827 に答える
1

: this(obj.ToString())同じクラスからオーバーロードされたバージョンのコンストラクターを呼び出します。

これは、このクラスのどこかに、stringパラメーターとして受け取り、現在のコンストラクターと一緒に実行される別のコンストラクターがあることを意味します。

class A
{
    public A(Class2 obj): this(obj.ToString()) // execute A(string text)
    {
        // your code
    }

    public A(string text)
    {
       // your code
    }
}
于 2012-06-22T16:32:45.867 に答える
0

クラス1には、文字列パラメーターを受け取る別のコンストラクターがあります。

于 2012-06-22T16:32:54.257 に答える
0

その構文に一致するコンストラクターを呼び出します。あなたの場合、どこかに文字列引数を取るコンストラクターがあると仮定しています。

public Class1(string s)
{ 
}
于 2012-06-22T16:32:57.010 に答える