7

是否可以使用 { } 将值加载到字典中?

这失败了

static Dictionary<byte, byte> dict = new Dictionary<byte, byte>() { new KeyValuePair<byte, byte>(1, 1) };

这不会失败,所以我怀疑在 { } 中加载的语法

static Dictionary<byte, byte> dic1252expand = new Dictionary<byte, byte>() { };

这是有效的示例语法

byte[] bytes = new byte[] { 1, 2, 3 }; 
KeyValuePair<byte, byte> kvp = new KeyValuePair<byte, byte>(1, 1);
4

5 回答 5

25

如果你给某人一条鱼,他们就有一条鱼;如果你教他们如何捕鱼,你不需要给他们鱼。张贴的所有答案都是正确的,但没有一个告诉您如何自己找出答案

C# 中的集合初始化器语法是“语法糖”;这只是编写一些无聊代码的一种更愉快的方式。当你写:

C c = new C() { p, q, { r, s }, {t, u, v} };

这就像你写的一样:

C c;
C temporary = new C();
temporary.Add(p);
temporary.Add(q);
temporary.Add(r, s);
temporary.Add(t, u, v);
c = temporary;

现在应该清楚如何确定在初始化子句中放入什么: 查看类型并查看各种 Add 方法将什么作为参数。在您的情况下,字典的 Add 方法需要一个键和一个值,因此初始化程序应该是{ { k1, v1 }, { k2, v2 } , ... }

有道理?

于 2013-04-24T15:08:22.950 回答
13

这是有效的:

Dictionary<byte, byte> dict = new Dictionary<byte, byte>() { { 1, 1 }, { 2, 2 } };
于 2013-04-24T13:14:42.540 回答
3
Dictionary<string, string> d = new Dictionary<string, string>{{"s", "s"}};
于 2013-04-24T13:15:16.380 回答
1
var dict = new Dictionary<int, int>()
    {
        { 1, 1 },
        { 2, 1 },
        { 3, 2 }
    };

这将设置一个包含三个键值对的字典。

于 2013-04-24T13:15:42.390 回答
1
Dictionary<byte, byte> d = new Dictionary<byte, byte>()
                       { 
                          { 1, 2 }, 
                          { 3, 4 } 
                       };
于 2013-04-24T13:15:51.217 回答