Я пытался проверить на пустой указатель, но компилятор предупреждает, что это условие никогда не будет происходить. Что я должен искать?
Если вы хотите получить значение, если ключ существует , используйте Словарь
:
int value;
if (dictionary.TryGetValue(key, out value))
{
// Key was in dictionary; "value" contains corresponding value
}
else
{
// Key wasn't in dictionary; "value" is now 0
}
(Используя ContainsKey
, а затем индексатор заставляет его выглядеть ключом вверх дважды, что довольно бессмысленно. )
Обратите внимание, что даже если вы использовали с типами ссылок, проверка на ноль не сработает - индексатор для Dictionary<,>
будет бросать исключение, если вы запросите отсутствующий ключ, а не возвращать ноль. (В этом большая разница между Словарь<,>
и Хэшиббл
.)
Если вы просто проверяете, прежде чем пытаться добавить новое значение, используйте элемент SEETKEY
Метод:
if (!openWith.ContainsKey("ht"))
{
openWith.Add("ht", "hypertrm.exe");
}
Если вы проверяете, что значение существует, используйте метод TrygetValue
, как описано в ответе Джона Скета.
Вы должны проверить на на наличие словаря. Containskey (int ключ), прежде чем пытаться вытащить значение.
Dictionary<int, int> myDictionary = new Dictionary<int, int>();
myDictionary.Add(2,4);
myDictionary.Add(3,5);
int keyToFind = 7;
if(myDictionary.ContainsKey(keyToFind))
{
myValueLookup = myDictionay[keyToFind];
// do work...
}
else
{
// the key doesn't exist.
}
Словарь выбрасывает keynotfound
исключение в случае, если словарь не содержит вашего ключа.
Как предложено, указывается
, является соответствующей мерой предосторожности. TrygetValue
также эффективен.
Это позволяет словарю сохранить значение NULL более эффективно. Без него повязят так, проверка нулевого результата из оператора [] будет указывать либо на нулевое значение, либо не существование входного ключа, которая не является хорошей.
Вероятно, следует использовать:
if(myDictionary.ContainsKey(someInt))
{
// do something
}
Причина, по которой нельзя проверить на ноль, заключается в том, что ключ здесь является типом значения.