在 C# 中,对象初始化如下:
var thing = new List<object>() {new object()};
在赋值之前发生,因此它与以下内容大致相同:
var _thing = new List<object>();
_thing.Add(new object());
var thing = _thing;
还是在分配之后发生,因此它与以下内容大致相同:
var thing = new List<object>();
thing.Add(new object());
如果您尝试在工厂中打一个递归结,例如:
static class AbstractFactory {
private static readonly IEnumerable<object> _list = new List<object>() {GetIEnumerable()};
public static IEnumerable<object> GetIEnumerable() {
return _list;
}
}
当在初始化器中调用方法时_list
返回时,它会是、还是未定义?GetIEnumerable
_list
new List<object>
null