IEnumerable-使用本地变量中的GetEnumerator实现

本文关键字:GetEnumerator 实现 变量 IEnumerable- | 更新日期: 2023-09-27 18:28:45

我是泛型/迭代器/枚举器等的新手。

我有代码,它为每个字段保留字段号(int)和错误台面(列表字符串):

  public class ErrorList : IEnumerable // ?
  {
        private Dictionary <int, List<string>> errorList;
        // ...
  }

如何使这个类使用foreach循环?我想使用GetEnumerator表单Dictionary,但我应该如何做到这一点?

IEnumerable-使用本地变量中的GetEnumerator实现

您可以简单地提供一个公共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()