Массив словарей в C # - PullRequest
       2

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

17 голосов
/ 16 февраля 2012

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

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

Но когда я это сделаю:

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

Выдает «TargetInvocationException» ... Исключение выдано целью вызова.

В чем проблема? Правильно ли я использую этот массив словарей?

Ответы [ 5 ]

24 голосов
/ 16 февраля 2012

Попробуйте это:

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

Вам нужно создать словари внутри массива, прежде чем вы сможете их использовать.

10 голосов
/ 16 февраля 2012

Вы устанавливали объекты массива для экземпляров 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");
4 голосов
/ 16 февраля 2012
Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];

Выполнение этого выделяет массив «матрица», но словари, которые должны содержаться в этом массиве, никогда не создаются.Вы должны создать объект Dictionary во всех ячейках массива, используя новое ключевое слово.

matrix[0] = new Dictionary<int, string>();
matrix[0].Add(0, "first str");
3 голосов
/ 16 февраля 2012

Вы забыли инициализировать словарь.Просто поместите строку ниже перед добавлением элемента:

matrix[0] = new Dictionary<int, string>();
3 голосов
/ 16 февраля 2012

Вы инициализировали массив, но не словарь. Вам нужно инициализировать матрицу [0] (хотя это должно вызвать исключение нулевой ссылки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...