Tag: collection initializer

字典的匿名集合初始值设定项

是否可以隐式声明下一个Dictionary : { urlA, new { Text = “TextA”, Url = “UrlA” } }, { urlB, new { Text = “TextB”, Url = “UrlB” } } 所以我可以这样使用它: foreach (var k in dic) { k.Key.Text = k.Value.Text; k.Key.NavigateUrl = k.Value.Url; } ?

列表属性的空集合初始值设定项结果为null

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

C#6的新集合初始化程序 – 澄清?

我读过: 该团队一直忙于实施初始化程序的其他变体。 例如,您现在可以初始化Dictionary对象 但看着: var Dic = new Dictionary{ {“x”,3}, {“y”,7} }; VS var Dic = new Dictionary{ [“x”]=3, [“y”]=7 }; 我不知道好处在哪里。 它看起来一样。 两者都只是一个名值集合。 他们用成对的方括号和一些逗号交换成对的花括号 题: 使用新语法的附加值是什么? 一个现实世界的例子将非常感激。