Dictionary<TKey,TValue>.IEnumerable.GetEnumerator 메서드

정의

컬렉션을 반복하는 열거자를 반환합니다.Returns an enumerator that iterates through the collection.

 virtual System::Collections::IEnumerator ^ System.Collections.IEnumerable.GetEnumerator() = System::Collections::IEnumerable::GetEnumerator;
System.Collections.IEnumerator IEnumerable.GetEnumerator ();
Function GetEnumerator () As IEnumerator Implements IEnumerable.GetEnumerator

반환

컬렉션에서 반복하는 데 사용할 수 있는 IEnumerator입니다.An IEnumerator that can be used to iterate through the collection.

구현

설명

C# 언어의 foreach 문 (의 C++for each, Visual Basic의 For Each)은 열거자의 복잡성을 숨깁니다.The foreach statement of the C# language (for each in C++, For Each in Visual Basic) hides the complexity of enumerators. 그러므로 열거자를 직접 조작하는 대신 foreach를 사용하는 것이 좋습니다.Therefore, using foreach is recommended, instead of directly manipulating the enumerator.

열거자를 사용하여 컬렉션의 데이터를 읽을 수는 있지만 내부 컬렉션을 수정할 수는 없습니다.Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.

처음에 열거자는 컬렉션의 첫 번째 요소 앞에 배치됩니다.Initially, the enumerator is positioned before the first element in the collection. Reset 메서드 또한 다시이 위치로 열거자를 가져옵니다.The Reset method also brings the enumerator back to this position. 이 위치에 Current 속성 정의 되지 않습니다.At this position, the Current property is undefined. 따라서 호출 해야 합니다 MoveNext 해당 열거자의 값을 읽기 전에 컬렉션의 첫 번째 요소를 이동 하는 방법 Current합니다.Therefore, you must call the MoveNext method to advance the enumerator to the first element of the collection before reading the value of Current.

Current 속성은 MoveNext 또는 Reset 메서드를 호출할 때까지 동일한 요소를 반환 합니다.The Current property returns the same element until either the MoveNext or Reset method is called. MoveNextCurrent를 다음 요소로 설정합니다.MoveNext sets Current to the next element.

경우 MoveNext 열거자를 컬렉션의 끝 컬렉션의 마지막 요소 뒤에 배치 되는 전달 하 고 MoveNext 반환 false합니다.If MoveNext passes the end of the collection, the enumerator is positioned after the last element in the collection and MoveNext returns false. 열거자가 있는 경우이 위치에 대 한 후속 호출은 MoveNext 반환할 수도 false합니다.When the enumerator is at this position, subsequent calls to MoveNext also return false. MoveNext에 대 한 마지막 호출이 false를 반환 하는 경우 Current이 정의 되지 않습니다.If the last call to MoveNext returned false, Current is undefined. Current를 컬렉션의 첫째 요소에 다시 설정하려면 Reset을 호출한 뒤 MoveNext를 호출해야 합니다.To set Current to the first element of the collection again, you can call Reset followed by MoveNext.

열거자는 컬렉션이 변경되지 않은 상태로 유지되는 한 유효한 상태를 유지합니다.An enumerator remains valid as long as the collection remains unchanged. 요소를 추가 하거나 용량을 변경 하는 등 컬렉션을 변경 하면 열거자가 복구할 수 없게 무효화 되 고 MoveNext 또는 IEnumerator.Reset에 대 한 다음 호출이 InvalidOperationException을 throw 합니다.If changes are made to the collection, such as adding elements or changing the capacity, the enumerator is irrecoverably invalidated and the next call to MoveNext or IEnumerator.Reset throws an InvalidOperationException.

.NET Core 3.0 +만 해당: 열거자를 무효화 하지 않는 유일한 변경 방법은 Remove 하 고 Clear합니다..NET Core 3.0+ only: The only mutating methods which do not invalidate enumerators are Remove and Clear.

열거자는 컬렉션에 독점적으로 액세스할 수 있는 권한이 없으므로 컬렉션을 열거하는 프로시저는 기본적으로 스레드로부터 안전하지 않습니다.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread safe procedure. 열거 동안 스레드 보안을 보장하려면 전체 열거 동안 컬렉션을 잠그면 됩니다.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. 여러 스레드에서 컬렉션에 액세스하여 읽고 쓸 수 있도록 허용하려면 사용자 지정 동기화를 구현해야 합니다.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

System.Collections.Generic 네임스페이스에서 컬렉션의 기본 구현은 동기화되지 않습니다.Default implementations of collections in the System.Collections.Generic namespace are not synchronized.

이 방법은 O(1) 작업에 설명 합니다.This method is an O(1) operation.

적용 대상

추가 정보