Как получить конкретное значение ключа словаря из ListDictionary? - PullRequest
0 голосов
/ 05 октября 2018

Я реализую ListDictionary.Я хотел бы быстро получить конкретный предмет из этого объекта без необходимости проходить через него все циклы.

Пример:

ListDictionary myCol = new ListDictionary();
myCol.Add("totalCount", 5);
myCol.Add("filteredCount", 2);
myCol.Add("data", data); // Value of data here isn't relevant

Теперь, что бы я хотелсделать, это получить значение «totalCount» и использовать его следующим образом:

int newCount = myCol["totalCount"] + 5;

Но это не компилируется с ошибкой «Оператор + не может быть применен к операндам типа« объект »и« int »Если я пытаюсь привести его к типу int, я получаю исключение: «Ссылка на объект не установлена ​​для экземпляра объекта».

Как мне получить действительное значение этого ключа?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Keys и Values - это тип объекта в ListDictionary.

Вам необходимо преобразовать объект в тип int.

int newCount = Convert.ToInt32( myCol["totalCount"]) + 5;

Примечание - по возможности используйте общий Dictionary, чтобы избежать ненужного преобразования.

0 голосов
/ 05 октября 2018

Возможно, ваша проблема в том, что Добавить метод для ListDictionary принимает значения типа object.Это означает, что ваши значения упакованы и распакованы.Это означает, что вам нужно будет привести к подходящему типу.Попробуйте вместо этого:

int newCount = (int?) myCol["totalCount"] + 5 ?? 5;

Это попытается преобразовать mycol["totalCount"] в целое число, но если оно равно null, просто присваивается 5 newCount

Fiddle

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