【问题标题】:Explanation of Dictionary Initialisation Syntax (C#)字典初始化语法解释(C#)
【发布时间】:2010-02-24 09:21:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    好的,让我们看看这里的代码:

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

    字典包含两个东西,一个键和一个值。 您的声明 Dictionary&lt;string, int&gt; 表示键是字符串,值是整数。

    现在,当您添加一个项目时,例如 {"cat", 2},,键是 cat。这相当于您执行d.Add("cat", 2); 之类的操作。字典可以容纳任何东西,从&lt;string, string&gt;&lt;customClass, anotherCustomClass&gt;。你可以使用int CAT = d["cat"]; 来调用它,int CAT 的值为 2。例如:

    Dictionary<string, int> dict = new Dictionary<string, int>() 
    { 
        {"cat", 1}
    };
    dict.Add("dog", 2);
    Console.WriteLine("Cat="+dict["cat"].ToString()+", Dog="+dict["dog"].ToString());
    

    在那里,您添加具有不同值的猫和狗并调用它们

    【讨论】:

      【解决方案2】:

      DictionaryICollectionKeyValuePairs。 {"cat", 2}KeyValuePair

      【讨论】:

        【解决方案3】:

        我不太确定你的问题在问什么,但答案是这是集合初始化的语法,它提供了 Add 方法的快捷方式。

        这也可以,例如:

        new List<DateTime>()
        {
            {DateTime.Now},
            {new DateTime()},
            {DateTime.Now}
        }
        

        通常当问题是“为什么这是有效的”时,答案是因为“它是有效的”:)

        请注意,您在问题后半部分指定的语法不仅适用于匿名对象,还适用于任何具有公共属性设置器的对象:

        new MyPerson("Bob")
        {
            Address = "185 What St",
            DoB = DateTime.Now
        }
        

        【讨论】:

          【解决方案4】:

          这是一个键值对。 Dictionary&lt;string,int&gt; 表示键是string,值是int。因此,对于{"cat", 2},您有一个"cat" 的键和一个2 的值。为什么你会有 cat 的键和 2 的值,我不确定,但无论如何它是 Dictionary 的一个示例,它带有一个字符串键和一个 int 值。更多信息和示例可以在这里找到:

          MSDN Dictionary<> with Examples

          【讨论】:

            猜你喜欢
            • 2021-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-17
            • 2021-11-22
            相关资源
            最近更新 更多