Невозможно использовать GetValueorDefault () для словаря в C # - PullRequest
0 голосов
/ 27 декабря 2018

Я определил словарь с каким-то пользовательским типом, подобным этому,

 public readonly Dictionary<PricingSection, View> _viewMappings = new Dictionary<PricingSection, View>();

Теперь, когда я пытаюсь сделать

_viewMappings.GetValueOrDefault(section);

раздел имеет тип PricingSection

Я получаю сообщение об ошибке:

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS1061 «Словарь» не содержит определения для «GetValueOrDefault» и не имеет доступного метода расширения «GetValueOrDefault», принимающегоможно найти первый аргумент типа «Словарь» (вам не хватает директивы using или ссылки на сборку?)

Я что-то упустил ??

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

GetValueOrDefault() является частью ImmutableDictionary.так что, конечно, вы получите сообщение об ошибке.вместо этого используйте

Dictionary.TryGetValue(TKey, TValue)

0 голосов
/ 27 декабря 2018

Я что-то упустил ??

Вам не хватает того факта, что Dictionary не содержит никакого метода с этим именем GetValueOrDefault

СловарьКласс

Возможно, вы ищете

Dictionary.TryGetValue (TKey, TValue) Метод

Получает значение, связанное суказанный ключ.

или

ImmutableDictionary.GetValueOrDefault Метод (IImmutableDictionary, TKey)

Получает значение для данногоключ, если в словаре есть соответствующий ключ.


Однако вы можете реализовать свой собственный

public static class Extensions
{
    public static TValue GetValueOrDefault<TKey, TValue>(this Dictionary<TKey, TValue> dict,TKey key)
      =>  dict.TryGetValue(key, out var value) ? value : default(TValue);
}
...