Подтвердить что ты не робот

С#: Что возвращает индексный словарь словаря [string]?

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

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

4b9b3361

Ответ 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), тем самым устраняя необходимость объявлять значение до выяснения, действительно ли оно вам понадобится.