3

「: this()」を使用してそれを実行できることはわかっていますが、そうすると、オーバーロードされたコンストラクターが最初に実行され、それを呼び出すコンストラクターの後に実行する必要があります。. . . 説明が複雑なので、いくつかのコードを入れてみましょう:

Class foo{
    public foo(){
       Console.WriteLine("A");
    }
    public foo(string x) : this(){
       Console.WriteLine(x);
    }
}

///....

Class main{
    public static void main( string [] args ){
       foo f = new foo("the letter is: ");
    }
}

この例では、プログラムは次のように表示されます

A 
the letter is:

しかし、私が欲しいのは

the letter is: 
A

これを行う「エレガントな方法」はありますか?コンストラクターのアクションを別のメソッドに抽出して、そこから呼び出すことは避けたいと思います。

4

2 に答える 2

0

コンストラクター アクションを仮想メソッドに抽出し、そこから呼び出します。

これにより、派生クラスの機能が基本クラスに対して実行される順序を完全に制御できます。

于 2014-02-17T19:20:24.657 に答える