当我运行这段代码时,它并没有ThisIsAList
像我期望的那样初始化为一个空集合……而是ThisIsAList
为空。
void Main()
{
var thing = new Thing
{
ThisIsAList = {}
};
Console.WriteLine(thing.ThisIsAList == null); // prints "True"
}
public class Thing
{
public List<string> ThisIsAList { get; set; }
}
为什么这不是编译错误?为什么是结果null
?
我想知道这里是否进行了隐式转换,但以下尝试产生了编译错误:
thing.ThisIsAList = Enumerable.Empty<string>().ToArray();
List<int> integers = { 0, 1, 2, 3 };
根据关于集合初始化器的 MSDN 文档,听起来集合初始化器基本上只是Add()
为您处理调用。所以我寻找可能的重载到List.Add
,但没有找到任何我认为适用的东西。
有人可以从 C# 规范中解释这里发生了什么吗?