次の方法で共有


IDTSInputColumnCollection90.GetEnumerator Method

IDTSInputColumnCollection90 を繰り返し処理できる列挙子を返します。

名前空間: Microsoft.SqlServer.Dts.Pipeline.Wrapper
アセンブリ: Microsoft.SqlServer.DTSPipelineWrap (microsoft.sqlserver.dtspipelinewrap.dll 内)

構文

'宣言
<DispIdAttribute(-4)> _
Function GetEnumerator As IEnumerator
[DispIdAttribute(-4)] 
IEnumerator GetEnumerator ()
[DispIdAttribute(-4)] 
IEnumerator^ GetEnumerator ()
/** @attribute DispIdAttribute(-4) */ 
IEnumerator GetEnumerator ()
DispIdAttribute(-4) 
function GetEnumerator () : IEnumerator

戻り値

コレクションの繰り返し処理で使用する IEnumerator です。

解説

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

最初、列挙子はコレクションの先頭の要素の前に配置されます。また、Reset によっても、再度この位置に列挙子が戻されます。この位置で Current を呼び出すと、例外がスローされます。したがって、Current の値を読み取る前に、MoveNext を呼び出して、列挙子をコレクションの先頭の要素に進めておく必要があります。

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

コレクションの末尾に達している場合は、列挙子はコレクションの最後の要素の後に配置されるため、MoveNext を呼び出すと false が返されます。MoveNext の最後の呼び出しで false が返された場合、Current を呼び出すと例外がスローされます。コレクションの先頭の要素に再び Current を設定するには、先に Reset を呼び出してから MoveNext を呼び出します。

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

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

スレッド セーフ

この型の public static (Microsoft Visual Basic では共有 ) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

プラットフォーム

開発プラットフォーム

サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。

対象プラットフォーム

サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。

参照

関連項目

IDTSInputColumnCollection90 Interface
IDTSInputColumnCollection90 Members
Microsoft.SqlServer.Dts.Pipeline.Wrapper Namespace