如何返回IDictionary C#

时间:2016-05-26 14:43:18

标签: c# generics idictionary

我想编写一个方法,它返回包含在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

如何实施此方法?

2 个答案:

答案 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