初始化C#哈希表的最简洁方式是什么?

50

C#允许使用单行表达式填充哈希表吗?我在思考类似于下面的Python语句:

mydict = {"a": 23, "b": 45, "c": 67, "d": 89}

换句话说,有没有一种替代方法可以在一个表达式中设置每个键值对?

1个回答

77

C#3中有一种语言扩展叫做集合初始化器,它允许您在一个语句中初始化集合的值。

以下是使用Dictionary<,>的示例:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var dict = new Dictionary<string, int>
        {
            {"a", 23}, {"b", 45}, {"c", 67}, {"d", 89}
        };
    }
}

这种语言扩展由C# 3编译器支持,它需要实现IEnumerable接口并拥有公共的Add方法。

如果你感兴趣,我建议你阅读我在StackOverflow上提出的这个问题,了解C#团队为什么以这种奇特的方式实现了这种语言扩展(一旦你阅读了这个问题的优秀回答,你会发现这种做法很有意义)。


1
有没有类似的语法来定义多层嵌套的字典?例如,Dictionary<string,Dictionary<string,decimal>> - Mason G. Zhwiti
我找到了这个技巧,并将其作为编辑添加到您的答案中,尽管它有点冗长,不确定是否能为任何人节省太多时间。 - Mason G. Zhwiti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接