Массив словарей в С#
Я хотел бы использовать что-то вроде этого:
Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];
Но, когда я это делаю:
matrix[0].Add(0, "first str");
Он выдает "TargetInvocationException"... Исключение было вызвано целью вызова. "
В чем проблема? Я правильно использую этот набор словарей?
Ответы
Ответ 1
Попробуйте следующее:
Dictionary<int, string>[] matrix = new Dictionary<int, string>[]
{
new Dictionary<int, string>(),
new Dictionary<int, string>()
};
Вам нужно создать экземпляр словарей внутри массива, прежде чем вы сможете их использовать.
Ответ 2
Вы установили объекты массива в экземпляры словаря?
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");
Ответ 3
Вы инициализировали массив, но не словарь. Вам нужно инициализировать матрицу [0] (хотя это должно привести к исключению нулевой ссылки).
Ответ 4
Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];
Выполнение этого выделяет матрицу 'matrix', но словари, которые должны содержаться в этом массиве, никогда не создаются. Вы должны создать объект Dictionary во всех ячейках массива, используя новое ключевое слово.
matrix[0] = new Dictionary<int, string>();
matrix[0].Add(0, "first str");
Ответ 5
Вы забыли инициализировать словарь. Просто поставьте строку ниже до, добавив элемент:
matrix[0] = new Dictionary<int, string>();