IEnumerator.Reset 方法

定义

将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

C#
public void Reset ();

例外

集合在枚举器创建后被修改。

枚举器不支持重置。

示例

下面的代码示例演示自定义集合接口 IEnumerator 的实现。 在此示例中, Reset 未显式调用 ,但实现它以支持在 Visual Basic) 中使用 foreach (for each 。 此代码示例是 接口的更大示例的 IEnumerator 一部分。

C#
// When you implement IEnumerable, you must also implement IEnumerator.
public class PeopleEnum : IEnumerator
{
    public Person[] _people;

    // Enumerators are positioned before the first element
    // until the first MoveNext() call.
    int position = -1;

    public PeopleEnum(Person[] list)
    {
        _people = list;
    }

    public bool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Person Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

注解

如果对集合进行了更改(例如添加、修改或删除元素),则 的行为是不确定的 Reset

提供 Reset 方法是为了实现 COM 互操作性。 它不一定需要实施:相反,实现者只需引发 。NotSupportedException

实施者说明

Reset() 的所有调用都必须使枚举器处于相同的状态。 首选实现是将枚举器移动到集合开头的第一个元素之前。 如果自创建枚举器以来已修改集合,这会使枚举器失效,这与 MoveNext()Current一致。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另请参阅