字典初始化语法(C#)的说明

时间:2010-02-24 00:59:30

标签: c#

我找到了一个示例,显示字典可以按如下方式初始化:

Dictionary<string, int> d = new Dictionary<string, int>()
{
    {"cat", 2},
    {"dog", 1},
    {"llama", 0},
    {"iguana", -1}
};

我不明白语法{"cat", 2}如何对创建键值对有效。集合初始化语法似乎是new MyObjType(){}的形式,而匿名对象的格式为{a="a", b="b"}。这里到底发生了什么?

4 个答案:

答案 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)

DictionaryICollection的{​​{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值。更多信息和示例可以在这里找到:

MSDN Dictionary<> with Examples