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

Rex*_*exE 48 c# hashtable

C#是否允许在单行表达式中填充哈希表?我正在考虑与以下Python相当的东西:

mydict = {"a": 23, "b": 45, "c": 67, "d": 89}
Run Code Online (Sandbox Code Playgroud)

换句话说,是否可以在单独的表达式中设置每个键值对?

And*_*are 75

C#3有一个名为collection initializers的语言扩展,它允许您在一个语句中初始化集合的值.

以下是使用以下示例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}
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

C#3编译器以及实现IEnumerable并具有公共Add方法的任何类型都支持此语言扩展.

如果您有兴趣,我建议您阅读我在StackOverflow上询问的这个问题,为什么 C#团队以如此好奇的方式实现了这种语言扩展(一旦您阅读了问题的优秀答案,您将看到它会产生很多感).