C #: Что возвращает индексатор [string] в Dictionary?

Что означает индексатор [string] для Dictionary вернуть, когда ключ не существует в словаре? Я новичок в C #, и я не могу найти ссылку так же хорошо, как Javadocs.

Получу ли я null или я получу исключение?

24 голоса | спросил jjnguy 29 MonEurope/Moscow2008-12-29T17:03:59+03:00Europe/Moscow12bEurope/MoscowMon, 29 Dec 2008 17:03:59 +0300 2008, 17:03:59

4 ответа


0

Если вы имеете в виду индексатор для Dictionary<string,SomeType>, то вы должны увидеть исключение (KeyNotFoundException). Если вы не хотите, чтобы произошла ошибка:

SomeType value;
if(dict.TryGetValue(key, out value)) {
   // key existed; value is set
} else {
   // key not found; value is default(SomeType)
}
ответил Marc Gravell 29 MonEurope/Moscow2008-12-29T17:10:50+03:00Europe/Moscow12bEurope/MoscowMon, 29 Dec 2008 17:10:50 +0300 2008, 17:10:50
0

Как всегда, документация - это способ выяснить это.

Исключения:

KeyNotFoundException
Свойство получено, а ключ не существует в коллекции

(я полагаю, вы имеете в виду Dictionary<TKey,TValue>, кстати.)

Обратите внимание, что это отличается от неуниверсального Поведение хеш-таблицы .

Чтобы попытаться получить значение ключа, когда вы не знаете, существует ли он или нет, используйте TryGetValue .

ответил Jon Skeet 29 MonEurope/Moscow2008-12-29T17:09:09+03:00Europe/Moscow12bEurope/MoscowMon, 29 Dec 2008 17:09:09 +0300 2008, 17:09:09
0

Я думаю, вы можете попробовать

dict.ContainsKey(someKey)

проверить, содержит ли словарь ключ или нет.

Спасибо

ответил Vikas 1 J000000Thursday10 2010, 12:11:40
0

В качестве альтернативы использованию TryGetValue вы можете сначала проверить, существует ли ключ, используя dict.ContainsKey(key), таким образом устраняя необходимость объявлять значение перед тем, как выяснить, действительно ли оно вам нужно.

ответил Kon 29 MonEurope/Moscow2008-12-29T17:18:40+03:00Europe/Moscow12bEurope/MoscowMon, 29 Dec 2008 17:18:40 +0300 2008, 17:18:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132