如何为字典设置迭代器
本文关键字:设置 迭代器 字典 | 更新日期: 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。