2

我想创建一个遍历键控集合的方法。我想确保我的方法支持扩展任何集合的迭代KeyedCollection<string, Collection<string>>

这是方法:

public void IterateCollection(KeyedCollection<string, Collection<string>> items)
{
    foreach (??? item in items)
    {
        Console.WriteLine("Key: " + item.Key);
        Console.WriteLine("Value: " + item.Value);
    }
}

它显然不起作用,因为我不知道哪种类型应该替换循环中的问号。我不能简单地放objectorvar因为我需要稍后在循环体中调用Keyand属性。Value我要寻找的类型是什么?谢谢。

4

2 回答 2

8

KeyedCollection<TKey, TItem>implements ICollection<TItem>,所以在这种情况下你会使用:

foreach(Collection<string> item in items)

这也是var会给你的。你没有得到键/值对KeyedCollection——你只是得到了值。

是否KeyedCollection真的不是最适合您使用的类型?

于 2011-11-11T14:14:29.980 回答
2

项目类型Collection<String>将由 的枚举数定义KeyedCollection。您不能随意决定使用适当的类型,以便同时获得两者KeyValue如果迭代不支持它,在这种情况下它不支持。请注意,使用显式类型和var完全相同。

如果您想要两者Key并且Value在迭代中可用,则需要使用该Dictionary<string, Collection<string>>类型。

于 2011-11-11T14:16:42.770 回答