SortedList<TKey,TValue>.GetEnumerator 메서드

정의

를 반복하는 열거자를 반환합니다 SortedList<TKey,TValue>.

public:
 System::Collections::Generic::IEnumerator<System::Collections::Generic::KeyValuePair<TKey, TValue>> ^ GetEnumerator();
public System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>> GetEnumerator();
member this.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<'Key, 'Value>>
Public Function GetEnumerator () As IEnumerator(Of KeyValuePair(Of TKey, TValue))

반품

IEnumerator<KeyValuePair<TKey,TValue>>

IEnumerator<T> 에 대한 형식 KeyValuePair<TKey,TValue> 의 형식입니다SortedList<TKey,TValue>.

구현

설명

C# 언어의 foreach 문(Visual Basic For Each)은 열거자의 복잡성을 숨깁니다. 따라서 열거자를 직접 조작하는 대신 사용하는 foreach 것이 좋습니다.

열거자는 컬렉션의 데이터를 읽는 데 사용할 수 있지만 기본 컬렉션을 수정하는 데 사용할 수는 없습니다.

사전은 내부 트리를 사용하여 정렬된 순서로 유지됩니다. 모든 새 요소는 올바른 정렬 위치에 배치되고 요소가 제거될 때마다 정렬 순서를 유지하도록 트리가 조정됩니다. 열거하는 동안 정렬 순서가 유지됩니다.

처음에는 열거자가 컬렉션의 첫 번째 요소 앞에 배치됩니다. 이 위치에서 Current 정의되지 않습니다. 따라서 값을 MoveNext읽기 전에 열거자를 컬렉션의 첫 번째 요소로 이동하도록 호출 Current 해야 합니다.

Current 는 호출될 때까지 MoveNext 동일한 개체를 반환합니다. MoveNext 는 다음 요소로 설정 Current 됩니다.

컬렉션의 끝을 전달하면 MoveNext 열거자가 컬렉션의 마지막 요소 뒤 위치에 배치되고 MoveNext 반환됩니다 false. 열거자가 이 위치에 있으면 다음에 반환false을 호출합니다MoveNext. 반환 MoveNextfalseCurrent 마지막 호출이 정의되지 않은 경우 컬렉션의 첫 번째 요소로 다시 설정할 Current 수 없습니다. 대신 새 열거자 인스턴스를 만들어야 합니다.

컬렉션이 변경되지 않은 상태로 유지되는 한 열거자는 유효한 상태로 유지됩니다. 컬렉션에 요소를 추가, 수정 또는 삭제하여 변경이 발생하면, 열거자는 복구할 수 없게 무효화되며 다음에 MoveNext 또는 Reset을 호출할 때 InvalidOperationException 예외가 발생합니다.

열거자는 컬렉션에 대한 단독 액세스 권한이 없습니다. 따라서 컬렉션을 열거하는 것은 본질적으로 스레드로부터 안전한 프로시저가 아닙니다. 열거 중 스레드 안전을 보장하기 위해 전체 열거형 중에 컬렉션을 잠글 수 있습니다. 읽기 및 쓰기를 위해 여러 스레드에서 컬렉션에 액세스할 수 있도록 하려면 고유한 동기화를 구현해야 합니다.

컬렉션의 기본 구현은 System.Collections.Generic 동기화되지 않습니다.

이 메서드는 O(1) 작업입니다.

적용 대상

추가 정보