我想编写一个方法,它返回包含在IDictionary
中的所有键值对,如Map.EntrySet()在java中所做的那样。
我试过:
例如,我们将IDictionary
定义为:
private IDictionary<T, MutableInt> _map = new Dictionary<T, MutableInt>();
方法如下:
public KeyValuePair<T, MutableInt> KeyValuePairSet()
{
return KeyValuePair<T, MutableInt>(_map.Keys, _map.Values);
}
在返回语句时,引发的错误是:
KeyValuePair<T, MutableInt> is a type but used like a variable
如何实施此方法?
答案 0 :(得分:3)
实际上它很容易,因为IDictionary<TKey, TValue>
扼杀了接口IEnumerable<KeyValuePair<TKey, TValue>>
所有你需要做的就是声明你的HashSet并传入字典,因为HashSet<T>
有一个构造函数,它接受一个IEnumerable<T>
作为参数。
public ISet<KeyValuePair<T, MutableInt>> KeyValuePairSet()
{
return new HashSet<KeyValuePair<T, MutableInt>>(_map);
}
答案 1 :(得分:3)
假设:
private IDictionary<T, MutableInt> map = new Dictionary<T, MutableInt>();
如果您想返回IEnumerable
的{{1}}:
KeyValuePair
如果您想返回IEnumerable<KeyValuePair<T, MutableInt>> get_pairs()
{
return map;
}
KeyValuePair
的键map
:
KeyValuePair<IEnumerable<T>, IEnumerable<MutableInt>> get_pair()
{
return new KeyValuePair<IEnumerable<T>, IEnumerable<MutableInt>>(map.Keys, map.Values);
}
如果您想返回HashSet
的{{1}}:
KeyValuePair