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コレクションの末尾を渡すと、列挙子はコレクション内の最後の要素の後に配置され、MoveNextfalseを返します。 列挙子がこの位置にある場合、後続の呼び出しMoveNextfalse返されます。 MoveNext false最後の呼び出しが返された場合、Currentは未定義です。 Currentをコレクションの最初の要素に再度設定することはできません。代わりに新しい列挙子インスタンスを作成する必要があります。

列挙子は、コレクションが変更されない限り有効なままです。 要素の追加、変更、削除など、コレクションに変更が加えられた場合、列挙子は回復不能に無効になり、次に MoveNext または Reset 呼び出すと InvalidOperationExceptionがスローされます。

列挙子は、コレクションへの排他的アクセス権を持っていません。したがって、コレクションを通じた列挙は、本質的にスレッド セーフなプロシージャではありません。 列挙中のスレッド セーフを保証するために、列挙体全体の間にコレクションをロックできます。 読み取りと書き込みのためにコレクションに複数のスレッドからアクセスできるようにするには、独自の同期を実装する必要があります。

System.Collections.Generic内のコレクションの既定の実装は同期されません。

このメソッドは O(1) 操作です。

適用対象

こちらもご覧ください