如何为字典设置迭代器

本文关键字:设置 迭代器 字典 | 更新日期: 2023-09-27 18:20:52

我有一个类,它使用字典来存储一些数据。

但我想向外部隐藏实现细节,为了迭代我的所有数据,我想向我的类的ouside发送一个迭代器

我该怎么做?

如何为字典设置迭代器

public IEnumerable<KeyValuePair<int, string>> Foo()
{
    var implementationDetail = new Dictionary<int, string>
    {
        { 1, "foo" },
        { 2, "bar" },
    };
    return implementationDetail;
}

您可以调用返回枚举器的Dictinary.GetEnumerator()

您可以返回_dict.getEnumerator(),但它会生成KeyValuePair项。您还不如退回一个IDictionary

因此,您可能需要_dict.Keys.getEnumerator(),和/或值也是如此。

但是返回一个枚举器是奇怪的,返回要好得多:_dict.Keys as IEnumerable<KeyType>

要迭代字典,可以使用:

返回KeyValuePairs的Dictionary.GetEnumerator

返回KeyCollection的Dictionary.Keys

返回ValueCollection的Dictionary.Values

如果出于某种原因需要隐藏字典,可以根据需要将dictionary.Keys和dictionary.Values强制转换为Array/List。