在使用 List 作为属性初始化类时,我目睹了一些奇怪的事情。这样做时
var stuff = new Stuff(){list = {1, 2, 3} };
它编译并崩溃说该列表为空。因此,将其添加到 Stuff 的构造函数中:
public Stuff(){
list = new List<int>();
}
List 现在被初始化为包含{1, 2, 3}
这似乎是有道理的。但是,将构造函数更改为
public Stuff(){
list = new List<int>(){1, 2, 3};
}
像这样初始化
var stuff = new Stuff(){list = {4, 5, 6} };
list 被初始化为包含{1, 2, 3, 4, 5, 6}
让我很困惑。
看起来这要么不应该编译,要么不应该这样。这里到底发生了什么?