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 回答