我找到了一个示例,显示字典可以按如下方式初始化:
Dictionary<string, int> d = new Dictionary<string, int>()
{
{"cat", 2},
{"dog", 1},
{"llama", 0},
{"iguana", -1}
};
我不明白语法{"cat", 2}
如何对创建键值对有效。集合初始化语法似乎是new MyObjType(){}
的形式,而匿名对象的格式为{a="a", b="b"}
。这里到底发生了什么?
答案 0 :(得分:7)
好的,让我们来看看这里的代码:
Dictionary<string, int> d = new Dictionary<string, int>()
{
{"cat", 2},
{"dog", 1},
{"llama", 0},
{"iguana", -1}
};
字典包含两个东西,一个键和一个值。
您的声明Dictionary<string, int>
表示键是字符串,值是整数。
现在,当你添加一个项目时,例如{"cat", 2},
,关键是cat。这对于你做d.Add("cat", 2);
这样的事情是等价的。字典可以容纳任何内容,从<string, string>
到<customClass, anotherCustomClass>
。并且要调用它,您可以使用int CAT = d["cat"];
的值为int CAT
的{{1}}。例如:
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{"cat", 1}
};
dict.Add("dog", 2);
Console.WriteLine("Cat="+dict["cat"].ToString()+", Dog="+dict["dog"].ToString());
在那里,您添加了具有不同值的猫和狗,并将其调用
答案 1 :(得分:1)
Dictionary
是ICollection
的{{1}}。 KeyValuePair
是{"cat", 2}
。
答案 2 :(得分:1)
我不确定你的问题是什么,但答案是这是集合初始化的语法,它提供了Add方法的快捷方式。
这也有效,例如:
new List<DateTime>()
{
{DateTime.Now},
{new DateTime()},
{DateTime.Now}
}
通常当问题是“为什么这是有效的”时,答案是因为“它是有效的”:)
请注意,您在问题的后半部分中指定的语法不仅适用于匿名对象,还适用于具有公共属性设置器的任何对象:
new MyPerson("Bob")
{
Address = "185 What St",
DoB = DateTime.Now
}
答案 3 :(得分:0)
这是一个关键值配对。 Dictionary<string,int>
表示密钥为string
,值为int
。因此,使用{"cat", 2}
时,您的密钥为"cat"
,值为2
。为什么你会有一个cat的值和2的值,我不确定,但从来没有它是一个字典的例子&lt;&gt;使用字符串键和int值。更多信息和示例可以在这里找到: