我想使用这样的东西:
Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];
但是,当我这样做时:
matrix[0].Add(0, "first str");
抛出“'TargetInvocationException'...调用目标抛出了异常。”
有什么问题?我正确使用那个字典数组吗?
答案 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>();