GetEnumerator メソッド
IDTSOutputCollection100 を繰り返し処理できる列挙子を返します。
名前空間: Microsoft.SqlServer.Dts.Pipeline.Wrapper
アセンブリ: Microsoft.SqlServer.DTSPipelineWrap (Microsoft.SqlServer.DTSPipelineWrap.dll)
構文
'宣言
Function GetEnumerator As IEnumerator
'使用
Dim instance As IDTSOutputCollection100
Dim returnValue As IEnumerator
returnValue = instance.GetEnumerator()
IEnumerator GetEnumerator()
IEnumerator^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator
function GetEnumerator() : IEnumerator
戻り値
型: System.Collections. . :: . .IEnumerator
コレクションの繰り返し処理で使用する IEnumerator を返します。
実装
説明
列挙子は、コレクションのデータの読み取りのみを許可します。列挙子を使用して、基になるコレクションを変更することはできません。
最初、列挙子は、コレクションの先頭の要素の前に位置付けられます。Reset を使用した場合も、列挙子がこの位置に戻されます。この位置で Current を呼び出すと、例外がスローされます。したがって、Current の値を読み取る前に、MoveNext を呼び出して、列挙子をコレクションの先頭の要素に進めておく必要があります。
MoveNext または Reset が呼び出されるまで、Current は同じオブジェクトを返します。MoveNext は、Current を次の要素に設定します。
列挙子は、コレクションの末尾を越えた後、コレクションの最後の要素の後に位置付けられるので、MoveNext を呼び出すと false が返されます。前回 MoveNext を呼び出して false が返された場合に、Current を呼び出すと例外がスローされます。コレクションの先頭の要素に再び Current を設定するには、先に Reset を呼び出してから MoveNext を呼び出します。
列挙子は、コレクションが変更されない限り有効です。要素の追加、変更、削除など、コレクションに変更が加えられた場合は、列挙子は無効になり回復できなくなります。そのため、次の MoveNext または Reset の呼び出しで InvalidOperationException がスローされます。MoveNext を呼び出してから Current を呼び出すまでの間にコレクションが変更された場合、列挙子が既に無効になっていても、Current は、設定されている要素を返します。
列挙子はコレクションに排他アクセスできないため、コレクションの列挙処理は本質的にスレッド セーフな処理ではありません。コレクションが同期されていても、他のスレッドがコレクションを変更する場合があり、このときは列挙子から例外がスローされます。列挙処理中のスレッド セーフを確保するには、列挙処理の間を通してコレクションをロックするか、または他のスレッドによって加えられた変更に起因する例外をキャッチします。