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属性。我要找的是什么类型的?谢谢

KeyedCollection<TKey, TItem>实现ICollection<TItem>,因此在这种情况下,您将使用:

foreach(Collection<string> item in items)

这也是var会给你的。在KeyedCollection中,您不会得到键/值对,您只得到值。

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

根据KeyedCollection的枚举器的定义,项类型将为Collection<String>。如果迭代不支持KeyValue,则不能任意决定使用适当的类型,而在本例中则不支持。请注意,使用显式类型和var完全相同。

如果希望KeyValue在迭代中都可用,则需要使用Dictionary<string, Collection<string>>类型。

相关内容

  • 没有找到相关文章

最新更新