以下代码编译,但失败并显示NullReferenceException
:
class Test
{
public Dictionary<string, string> Dictionary { get; set; }
}
static void Main(string[] args)
{
var x = new Test
{
Dictionary = // fails
{
{ "key", "value" }, { "key2", "value2" }
}
};
}
如果您将标记为“失败”的行替换为以下内容,则它可以工作(如预期的那样):
Dictionary = new Dictionary<string, string>
失败的语法有什么目的——它可以在其他情况下成功使用吗?或者这是编译器的疏忽?