我已经定义了具有这种自定义类型的Dictionary,
public readonly Dictionary<PricingSection, View> _viewMappings = new Dictionary<PricingSection, View>();
现在当我尝试做
_viewMappings.GetValueOrDefault(section);
节的类型为PricingSection
我说错了
严重性代码描述项目文件行抑制状态 错误CS1061“字典”不包含“ GetValueOrDefault”的定义,并且找不到包含第一个“字典”类型自变量的可访问扩展方法“ GetValueOrDefault”(您是否缺少using指令或程序集引用?)
我错过了什么吗?
答案 0 :(得分:12)
我错过了什么吗?
您缺少以下事实:Dictionary
不包含任何名称为GetValueOrDefault
的方法
也许您正在寻找
Dictionary.TryGetValue(TKey, TValue) Method
获取与指定键关联的值。
或
ImmutableDictionary.GetValueOrDefault Method (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);
}
答案 1 :(得分:1)
GetValueOrDefault()
是ImmutableDictionary
的一部分。因此,您当然会收到错误消息。改为使用
Dictionary.TryGetValue(TKey, TValue)
答案 2 :(得分:0)
当我遇到相同的问题时,我只是想念这个:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at com.example.myapp.Activity.MainActivity.onBackPressed(MainActivity.java:225)
如@guyarad所述,这是IReadOnlyDictionary上的扩展方法,但需要导入。看起来似乎很明显,但是由于您可以不使用导入就使用返回的字典,因此在大多数情况下都可以使它感到困惑,但是却丢失了您确定应该具有的某些功能。