0

次のようなクラスを見つけました。

class Controller
{
    private readonly IDataContext _myContext = new DataContext("connectionstring");

    public Controller(IDataContext context){
        _myContext = context;
    }
}

与えられたインスタンスは以下のように作成されます:

var controller = new Controller(new DataContext("anotherconnectionstring"));

私が知りたいのは、どれが _myContext フィールドに割り当てられる最終インスタンスになるかということです? 引数として渡されたもの、または宣言で RHS として使用されたもの?

4

1 に答える 1

2

クラス定義で明示的に初期化されたすべてのフィールドは、他の明示的に定義されたパラメーター化されたコンストラクターの前に呼び出されるデフォルトのクラス/型コンストラクターに移動されます。したがって、最終的な値は、カスタム コンストラクターで渡す値になります。

MSDN、フィールド (C# プログラミング ガイド)

フィールドは、オブジェクト インスタンスのコンストラクターが呼び出される直前に初期化されます。コンストラクターがフィールドの値を代入すると、フィールド宣言中に指定された値が上書きされます。

于 2012-11-28T19:45:55.907 に答える