IEnumerator.Current 属性

定义

获取集合中位于枚举数当前位置的元素。

C#
public object Current { get; }
C#
public object? Current { get; }

属性值

集合中位于枚举数当前位置的元素。

示例

下面的代码示例演示自定义集合接口 IEnumerator 的实现。 在此示例中, Current 未显式调用 ,但实现它以支持在 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();
            }
        }
    }
}

注解

Current 在以下任一条件下未定义:

  • 枚举器位于集合中的第一个元素之前,紧接在创建枚举器之后。 MoveNext 在读取 的值 Current之前,必须调用 以将枚举器推进到集合的第一个元素。

  • 对返回false的 的最后一MoveNext次调用,指示集合的末尾。

  • 由于集合中所做的更改(例如添加、修改或删除元素),枚举器失效。

在调用 Current 之前,MoveNext 返回相同的对象。 MoveNextCurrent 设置为下一个元素。

适用于

产品 版本
.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

另请参阅