【发布时间】:2012-05-03 20:45:17
【问题描述】:
通过今天的一些随机对象创建,我发现了Dictionary<K, V> 的这个简洁的小快捷方式。以下分配是编译器快捷方式还是Dictionary<string, string> 的功能。
IDictionary<string, string> items = { { "item1key", "item1value" } };
查看Dictionary<K, V> 的源代码我没有看到任何关于其工作原理的东西。为此类 dot 实现所有接口不允许我执行类似的操作。为什么我们可以为字典而不是另一种类型。例如,编译器或语言特性如何知道第一项是键,第二项是值。或者更具体地说,同样的语法不能用于List<string>
List<string> items = { "item1" };
所以第一个是有效的,为什么?
我不一定想复制这个,而是很好奇为什么它是这样的。在这种情况下,字典有什么特别之处?
有效的示例
public class Button
{
public string Title { get; set; }
public ButtonType Type { get; set; }
public IDictionary<string, string> Items { get; set; }
public bool RequiresSelected { get; set; }
}
var buttons = new List<Button>
{
new Button {
Items = {
{"button1", "Button 1"},
{"button2", "Button 2"},
{"button3", "Button 3"},
},
Title = "3 Buttons",
Type = ButtonType.DropDown
}
};
【问题讨论】:
标签: c# .net compiler-construction