다음을 통해 공유


IEnumerator.Current 속성

컬렉션의 현재 요소를 가져옵니다.

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

구문

‘선언
ReadOnly Property Current As Object
‘사용 방법
Dim instance As IEnumerator
Dim value As Object

value = instance.Current
Object Current { get; }
property Object^ Current {
    Object^ get ();
}
/** @property */
Object get_Current ()
function get Current () : Object

속성 값

컬렉션의 현재 요소입니다.

예외

예외 형식 조건

InvalidOperationException

열거자가 컬렉션의 첫 번째 요소 앞 또는 마지막 요소 뒤에 배치되는 경우

- 또는 -

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

설명

열거자를 만든 후 또는 Reset 메서드를 호출한 후 Current 속성 값을 읽기 전에 먼저 MoveNext 메서드를 호출하여 해당 열거자를 컬렉션의 첫 번째 요소로 이동해야 합니다. 그렇지 않으면 Current가 정의되지 않습니다.

또한 MoveNext를 마지막으로 호출하여 컬렉션의 끝을 나타내는 false가 반환되면 Current는 예외를 throw합니다.

MoveNext 또는 Reset이 호출될 때까지 Current는 열거자의 위치를 이동하지 않으므로 Current를 연속으로 호출해도 같은 개체가 반환됩니다.

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

예제

다음 코드 예제에서는 사용자 지정 컬렉션에 대한 IEnumerator 인터페이스를 구현하는 방법을 보여 줍니다. 이 예제에서 Current는 명시적으로 호출되지 않지만 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 네임스페이스
MoveNext
Reset