今天在创建一些随机对象时,我发现了一个很棒的
Dictionary<K, V>
的小快捷方式。以下赋值是编译器的快捷方式还是Dictionary<string, string>
的特性呢?IDictionary<string, string> items = { { "item1key", "item1value" } };
查看Dictionary<K, V>
的源代码,我没有看到任何关于它如何工作的信息。实现该类的所有接口并不能让我执行类似的操作。为什么我们可以在字典中这样做,而不是其他类型呢?例如,编译器或语言特性如何知道第一个项目是键,第二个项目是值。或者更具体地说,这种相同的语法不能用于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
}
};