次の方法で共有


Model3DCollection.GetEnumerator メソッド

定義

このコレクションを反復処理できる列挙子を返します。

public:
 System::Windows::Media::Media3D::Model3DCollection::Enumerator GetEnumerator();
public System.Windows.Media.Media3D.Model3DCollection.Enumerator GetEnumerator ();
member this.GetEnumerator : unit -> System.Windows.Media.Media3D.Model3DCollection.Enumerator
Public Function GetEnumerator () As Model3DCollection.Enumerator

戻り値

Model3DCollection.Enumerator

コレクションを繰り返し処理できる列挙子です。

注釈

列挙子は、コレクションのデータの読み取りのみを許可します。 列挙子を使用して、基になるコレクションを変更することはできません。

最初は、列挙子はコレクション内の最初の項目の前に配置されます。 この位置で Current を呼び出すと、例外がスローされます。 したがって、Current の値を読み取る前に、列挙子をコレクションの最初の項目に進めるために呼び出す MoveNext 必要があります。

現在は、MoveNext または Reset 呼び出されるまで、同じオブジェクトを返します。 MoveNext は Current を次の項目に設定します。

コレクションの末尾が渡されると、列挙子はコレクション内の最後の項目の後に配置され、MoveNext を呼び出すと false が返されます。 MoveNext の最後の呼び出しが false を返した場合、Current を呼び出すと例外がスローされます。 Current をコレクションの最初の項目に再び設定するには、Reset の後に MoveNext を呼び出します。

列挙子は、コレクションが変更されない限り有効です。 項目の追加、変更、削除など、コレクションに変更が加えられた場合、列挙子は回復不能に無効になり、MoveNext または Reset の次の呼び出しでは InvalidOperationException がスローされます。 MoveNext と Current の間でコレクションが変更された場合、列挙子が既に無効になっている場合でも、Current は設定されている項目を返します。

列挙子はコレクションに排他アクセスできないため、コレクションの列挙処理は本質的にスレッド セーフな処理ではありません。 コレクションが同期されている場合でも、他のスレッドがコレクションを変更する場合があるため、列挙子が例外をスローする原因になります。 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

適用対象