С#: Что возвращает индексный словарь словаря [string]?
Что возвращает [string]
indexer Dictionary
, когда ключ не существует в словаре? Я новичок в С#, и я не могу найти ссылку так же хорошо, как Javadocs.
Получить null
или получить исключение?
Ответы
Ответ 1
Если вы имеете в виду индексатор a 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)
}
Ответ 2
Как всегда, документация - это способ узнать.
В разделе "Исключения:
KeyNotFoundException
The property is retrieved and key does not exist in the collection
(Я предполагаю, что вы имеете в виду Dictionary<TKey,TValue>
, кстати.)
Обратите внимание, что это отличается от неэквивалентного поведения Hashtable.
Чтобы попытаться получить ключевое значение, если вы не знаете, существует ли оно, используйте TryGetValue.
Ответ 3
Я думаю, вы можете попробовать
dict.ContainsKey(someKey)
чтобы проверить, содержит ли Словарь ключ или нет.
Спасибо
Ответ 4
В качестве альтернативы использованию TryGetValue
вы можете сначала проверить, существует ли ключ с помощью dict.ContainsKey(key)
, тем самым устраняя необходимость объявлять значение до выяснения, действительно ли оно вам понадобится.