次の方法で共有


MaterialCollection.GetEnumerator メソッド

定義

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

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

戻り値

コレクションを反復処理できる列挙子。

注釈

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

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

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

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

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

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

適用対象