Массив словарей в С#

Я хотел бы использовать что-то вроде этого:

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>();