C#中的字典数组

时间:2012-02-15 20:55:54

标签: c# arrays dictionary

我想使用这样的东西:

Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];

但是,当我这样做时:

matrix[0].Add(0, "first str");

抛出“'TargetInvocationException'...调用目标抛出了异常。”

有什么问题?我正确使用那个字典数组吗?

5 个答案:

答案 0 :(得分:24)

试试这个:

Dictionary<int, string>[] matrix = new Dictionary<int, string>[] 
{
    new Dictionary<int, string>(),
    new Dictionary<int, string>()
};

您需要先在数组中实例化字典,然后才能使用它们。

答案 1 :(得分:10)

您是否将数组对象设置为Dictionary的实例?

Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];
matrix[0] = new Dictionary<int, string>();
matrix[1] = new Dictionary<int, string>();
matrix[0].Add(0, "first str");

答案 2 :(得分:4)

Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];

这样做会分配数组'matrix',但是那个应该包含在该数组中的字典永远不会被实例化。您必须使用new关键字在数组的所有单元格中创建一个Dictionary对象。

matrix[0] = new Dictionary<int, string>();
matrix[0].Add(0, "first str");

答案 3 :(得分:3)

您已初始化数组,但不是字典。您需要初始化matrix [0](尽管这会导致空引用异常)。

答案 4 :(得分:3)

您忘记初始化词典。只需在之前添加项下面的行:

matrix[0] = new Dictionary<int, string>();