最简洁的方法来初始化C#哈希表

Most concise way to initialize a C# hashtable

本问题已经有最佳答案,请猛点这里访问。

C允许在一行表达式中填充哈希表吗?我在考虑类似于下面的python的东西:

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

换句话说,在单独的表达式中设置每个键值对是否有其他选择?


C 3有一个称为集合初始值设定项的语言扩展,它允许您在一个语句中初始化集合的值。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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团队以这样一种奇怪的方式实现了这种语言扩展(一旦您阅读了这个问题的优秀答案,您会发现它很有意义)。