KeyedCollection是什么的集合?

时间:2011-11-11 14:12:06

标签: c# collections keyedcollection

我想创建一个迭代键控集合的方法。我想确保我的方法支持任何扩展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);
    }
}

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

2 个答案:

答案 0 :(得分:8)

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

foreach(Collection<string> item in items)

这也是var给你的东西。您在KeyedCollection中没有获取键/值对 - 您只需获取值。

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

答案 1 :(得分:2)

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

如果您希望迭代中同时提供KeyValue,则需要使用Dictionary<string, Collection<string>>类型。