コンストラクタ初期化子に関するこの次のセクションの意味は何ですか?
インスタンス コンストラクターの初期化子は、作成中のインスタンスにアクセスできません。したがって
this
、コンストラクター初期化子の引数式で参照するのはコンパイル時エラーであり、単純名を介して任意のインスタンス メンバーを参照する引数式のコンパイル時エラーと同様です。
コンストラクタ初期化子に関するこの次のセクションの意味は何ですか?
インスタンス コンストラクターの初期化子は、作成中のインスタンスにアクセスできません。したがって
this
、コンストラクター初期化子の引数式で参照するのはコンパイル時エラーであり、単純名を介して任意のインスタンス メンバーを参照する引数式のコンパイル時エラーと同様です。
これは、コンストラクター初期化子の実行時にインスタンスがまだ作成中であることを意味します。したがって、その初期化子は、インスタンス メンバーにアクセスすることはできませんthis
。
class Foo
{
private int _bar;
public Foo(int bar)
{
_bar = bar;
}
public Foo() : this(_bar) // Illegal.
{
}
public Foo() : this(this._bar) // Also illegal.
{
}
}
この推論は、両方のコンストラクタ初期化子 (this()
およびbase()
) に適用されます。