다음을 통해 공유


IEnumerator.MoveNext 메서드

열거자를 컬렉션의 다음 요소로 이동합니다.

네임스페이스: System.Collections
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Function MoveNext As Boolean
‘사용 방법
Dim instance As IEnumerator
Dim returnValue As Boolean

returnValue = instance.MoveNext
bool MoveNext ()
bool MoveNext ()
boolean MoveNext ()
function MoveNext () : boolean

반환 값

열거자가 다음 요소로 이동한 경우 true가 반환되고, 컬렉션의 끝을 지난 경우 false가 반환됩니다.

예외

예외 형식 조건

InvalidOperationException

열거자가 만들어진 후 컬렉션이 수정된 경우

설명

열거자를 만들거나 Reset 메서드를 호출하면 열거자가 컬렉션의 첫 번째 요소 앞에 배치되고 MoveNext 메서드를 처음 호출하면 열거자가 컬렉션의 첫 번째 요소 뒤로 이동합니다.

MoveNext가 컬렉션의 끝을 지나게 되면 열거자는 컬렉션의 마지막 요소 뒤에 배치되고, MoveNextfalse를 반환합니다. 열거자가 이 위치에 있는 경우 Reset이 호출될 때까지 MoveNext에 대한 후속 호출 또한 false를 반환합니다.

열거자는 컬렉션이 변경되지 않은 상태로 유지되는 한 유효합니다. 그러나 요소를 추가, 수정, 삭제하는 등 컬렉션을 변경하면 열거자는 더 이상 유효하지 않으며(복구할 수 없음) 다음에 MoveNext 또는 Reset을 호출하면 InvalidOperationException이 throw됩니다.

예제

다음 코드 예제에서는 사용자 지정 컬렉션에 대한 IEnumerator 인터페이스를 구현하는 방법을 보여 줍니다. 이 예제에서 MoveNext는 명시적으로 호출되지 않지만 foreach(Visual Basic의 경우 for each)의 사용을 지원하기 위해 구현됩니다. 이 코드 예제는 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
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;
    }

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

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

IEnumerator 인터페이스
IEnumerator 멤버
System.Collections 네임스페이스
Current
Reset