IEnumerable-使用本地变量中的GetEnumerator实现
本文关键字:GetEnumerator 实现 变量 IEnumerable- | 更新日期: 2023-09-27 18:28:45
我是泛型/迭代器/枚举器等的新手。
我有代码,它为每个字段保留字段号(int)和错误台面(列表字符串):
public class ErrorList : IEnumerable // ?
{
private Dictionary <int, List<string>> errorList;
// ...
}
如何使这个类使用foreach循环?我想使用GetEnumerator表单Dictionary,但我应该如何做到这一点?
您可以简单地提供一个公共GetEnumerator
方法:
public class ErrorList
{
private Dictionary<int, List<string>> errorList = new Dictionary<int, List<string>>();
... some methods that fill the errorList field
public IEnumerator<KeyValuePair<int, List<string>>> GetEnumerator()
{
return errorList.GetEnumerator();
}
}
现在假设您有一个ErrorList:的实例
var errors = new ErrorList();
你可以循环浏览它们:
foreach (KeyValuePair<int, List<string>> item in errors)
{
...
}
Dictionary实现了IEnumerable<KeyValuePair<TKey, TValue>>
,因此它起作用:
foreach (KeyValuePair<Int, List<String>> kvp in errorList) {
var idx = kvp.Key;
var vals = kvp.Value;
// ... do whatever here
}
您可以简单地返回errorList.GetEnumerator()
。