IEnumerator.Current 属性

定义

获取集合中位于枚举数当前位置的元素。Gets the element in the collection at the current position of the enumerator.

public:
 property System::Object ^ Current { System::Object ^ get(); };
public object Current { get; }
member this.Current : obj
Public ReadOnly Property Current As Object

属性值

集合中位于枚举数当前位置的元素。The element in the collection at the current position of the enumerator.

示例

下面的代码示例演示如何实现IEnumerator自定义集合的接口。The following code example demonstrates the implementation of the IEnumerator interfaces for a custom collection. 在此示例中Current , 未显式调用, 但实现它是为了支持foreach使用 (for each在 Visual Basic 中)。In this example, Current is not explicitly called, but it is implemented to support the use of foreach (for each in Visual Basic). 此代码示例摘自一个更大的IEnumerator接口示例。This code example is part of a larger example for the IEnumerator interface.

// 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();
            }
        }
    }
}
' When you implement IEnumerable, you must also implement IEnumerator.
Public Class PeopleEnum
    Implements IEnumerator

    Public _people() As Person

    ' Enumerators are positioned before the first element
    ' until the first MoveNext() call.
    Dim position As Integer = -1

    Public Sub New(ByVal list() As Person)
        _people = list
    End Sub

    Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
        position = position + 1
        Return (position < _people.Length)
    End Function

    Public Sub Reset() Implements IEnumerator.Reset
        position = -1
    End Sub

    Public ReadOnly Property Current() As Object Implements IEnumerator.Current
        Get
            Try
                Return _people(position)
            Catch ex As IndexOutOfRangeException
                Throw New InvalidOperationException()
            End Try
        End Get
    End Property
End Class

注解

Current在以下任何条件下均未定义:Current is undefined under any of the following conditions:

  • 枚举器位于集合中第一个元素之前, 紧跟在创建枚举器之后。The enumerator is positioned before the first element in the collection, immediately after the enumerator is created. MoveNext在读取的值Current之前, 必须调用以将枚举数前移到集合的第一个元素。MoveNext must be called to advance the enumerator to the first element of the collection before reading the value of Current.

  • MoveNext 返回false的最后一个调用, 指示集合的末尾。The last call to MoveNext returned false, which indicates the end of the collection.

  • 由于对集合所做的更改 (如添加、修改或删除元素), 枚举器无效。The enumerator is invalidated due to changes made in the collection, such as adding, modifying, or deleting elements.

在调用 Current 之前,MoveNext 返回相同的对象。Current returns the same object until MoveNext is called. MoveNextCurrent 设置为下一个元素。MoveNext sets Current to the next element.

适用于

另请参阅