コードは次のとおりです。
class Class1
{
private Class2 object;
public Class1(Class2 obj) : this(obj.ToString())
{
this.object = obj;
}
}
より具体的には、その: this
部分は何をしますか。
コードは次のとおりです。
class Class1
{
private Class2 object;
public Class1(Class2 obj) : this(obj.ToString())
{
this.object = obj;
}
}
より具体的には、その: this
部分は何をしますか。
これ: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
)が実行されます。
: 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
}
}
クラス1には、文字列パラメーターを受け取る別のコンストラクターがあります。
その構文に一致するコンストラクターを呼び出します。あなたの場合、どこかに文字列引数を取るコンストラクターがあると仮定しています。
public Class1(string s)
{
}