이 설명서는 보관되지만 유지 되지 않습니다.

IEnumerator.Current 속성

업데이트: 2007년 11월

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

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

Object Current { get; }
/** @property */
Object get_Current()

function get Current () : Object

속성 값

형식: System.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 : 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Compact Framework

3.5, 2.0, 1.0에서 지원

XNA Framework

2.0, 1.0에서 지원
표시: