IEnumerator.MoveNext Metode

Definisi

Memajukan enumerator ke elemen koleksi berikutnya.

public:
 bool MoveNext();
public bool MoveNext ();
abstract member MoveNext : unit -> bool
Public Function MoveNext () As Boolean

Mengembalikan

true jika enumerator berhasil dimajukan ke elemen berikutnya; false jika enumerator telah melewati akhir koleksi.

Pengecualian

Koleksi dimodifikasi setelah enumerator dibuat.

Contoh

Contoh kode berikut menunjukkan implementasi IEnumerator antarmuka untuk koleksi kustom. Dalam contoh ini, MoveNext tidak secara eksplisit disebut, tetapi diimplementasikan untuk mendukung penggunaan foreach (for each di Visual Basic). Contoh kode ini adalah bagian dari contoh yang lebih besar untuk IEnumerator antarmuka.

// 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

Keterangan

Setelah enumerator dibuat atau setelah Reset metode dipanggil, enumerator diposisikan sebelum elemen pertama koleksi, dan panggilan pertama ke MoveNext metode memindahkan enumerator ke elemen pertama koleksi.

Jika MoveNext melewati akhir koleksi, enumerator diposisikan setelah elemen terakhir dalam koleksi dan MoveNext mengembalikan false. Ketika enumerator berada di posisi ini, panggilan berikutnya untuk MoveNext juga kembali false sampai Reset dipanggil.

Jika perubahan dilakukan pada koleksi, seperti menambahkan, memodifikasi, atau menghapus elemen, perilaku MoveNext tidak ditentukan.

Berlaku untuk

Lihat juga