作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
查看System.Collections.Generic.Dictionary<TKey, TValue>
, 它清楚地实现了 ICollection<KeyValuePair<TKey, TValue>>
,但没有所需的“void Add(KeyValuePair<TKey, TValue> item)
”功能。
这也可以在尝试初始化 Dictionary
时看到像这样:
private const Dictionary<string, int> PropertyIDs = new Dictionary<string, int>()
{
new KeyValuePair<string,int>("muh", 2)
};
失败了
No overload for method 'Add' takes '1' arguments
为什么会这样?
最佳答案
预期的 API 是通过两个参数添加 Add(key,value)
方法(或 this[key]
索引器);因此,它使用显式接口(interface)实现来提供 Add(KeyValuePair<,>)
方法。
如果您使用 IDictionary<string, int>
相反,您将可以访问缺少的方法(因为您无法在界面上隐藏任何内容)。
此外,对于集合初始值设定项,请注意您可以使用替代语法:
Dictionary<string, int> PropertyIDs = new Dictionary<string, int> {
{"abc",1}, {"def",2}, {"ghi",3}
}
它使用 Add(key,value)
方法。
关于C#:Dictionary<K,V> 如何在没有 Add(KeyValuePair<K,V>) 的情况下实现 ICollection<KeyValuePair<K,V>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268064/
我是一名优秀的程序员,十分优秀!