只读字段初始化顺序

时间:2012-11-28 19:42:39

标签: c#

我找到了一个类似于下一个类的课程:

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

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

给定实例创建如下:

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

我想知道的是哪个是分配给_myContext字段的最终实例?作为参数传递的那个或在声明中用作RHS的那个?

1 个答案:

答案 0 :(得分:2)

将在类定义中显式初始化的所有字段移动到默认的类/类型构造函数中,该构造函数将在任何其他显式定义的参数化构造函数之前调用。因此,最终值将是您在自定义构造函数中传递的值。

MSDN, Fields (C# Programming Guide)

  

字段在构造函数之前立即初始化   调用对象实例。如果构造函数赋值a   字段,它将覆盖字段声明期间给出的任何值。