DoubleKeyFrameCollection.GetEnumerator メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このコレクションを反復処理できる列挙子を返します。
public:
virtual System::Collections::IEnumerator ^ GetEnumerator();
public System.Collections.IEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Function GetEnumerator () As IEnumerator
戻り値
コレクションを繰り返し処理できる IEnumerator です。
実装
注釈
列挙子は、コレクションのデータの読み取りのみを許可します。 列挙子を使用して、基になるコレクションを変更することはできません。
最初は、列挙子はコレクション内の最初の項目の前に配置されます。 また、Reset メソッドは、列挙子を最初の位置に戻します。 この位置で Current を呼び出すと、例外がスローされます。 したがって、値を読み取る前に、列挙子をコレクションの最初の項目に進めるために呼び出 MoveNext す Current必要があります。
Current は、MoveNext または Reset が呼び出されるまでは同じオブジェクトを返します。 MoveNext は次の項目に設定 Current されます。
コレクションの末尾が渡されると、列挙子はコレクション内の最後の項目の後に配置され、呼び出しは MoveNext 返されます false
。 前回 MoveNext を呼び出して false
が返された場合に、Current を呼び出すと例外がスローされます。 コレクションの最初の項目をもう一度設定Currentするには、その後にMoveNext続けて呼び出Resetすことができます。
列挙子は、コレクションが変更されない限り有効です。 項目の追加、変更、削除など、コレクションに変更が加えられた場合、列挙子は回復不能に無効になり、次の呼び出し MoveNext または Reset スロー InvalidOperationExceptionが行われます。 コレクションが変更MoveNextされた場合、列挙CurrentCurrent子が既に無効になっている場合でも、設定されている項目が返されます。
列挙子はコレクションに排他アクセスできないため、コレクションの列挙処理は本質的にスレッド セーフな処理ではありません。 コレクションが同期されている場合でも、他のスレッドがコレクションを変更する場合があるため、列挙子が例外をスローする原因になります。 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。