我找到了一个类似于下一个类的课程:
class Controller
{
private readonly IDataContext _myContext = new DataContext("connectionstring");
public Controller(IDataContext context){
_myContext = context;
}
}
给定实例创建如下:
var controller = new Controller(new DataContext("anotherconnectionstring"));
我想知道的是哪个是分配给_myContext字段的最终实例?作为参数传递的那个或在声明中用作RHS的那个?
答案 0 :(得分:2)
将在类定义中显式初始化的所有字段移动到默认的类/类型构造函数中,该构造函数将在任何其他显式定义的参数化构造函数之前调用。因此,最终值将是您在自定义构造函数中传递的值。
MSDN, Fields (C# Programming Guide)
字段在构造函数之前立即初始化 调用对象实例。如果构造函数赋值a 字段,它将覆盖字段声明期间给出的任何值。