Collection.GetEnumeratorとは? わかりやすく解説

Collection.GetEnumerator メソッド

Collection オブジェクト (Visual Basic) に対する反復処理に使用する、列挙子オブジェクトへの参照を返します。

名前空間: Microsoft.VisualBasic
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)
構文構文

解説解説
使用例使用例

GetEnumerator を使用して Collection オブジェクトのすべての要素を取得する例を次に示します。

Dim customers As New Collection
' Insert code to add elements to the customers collection.
Dim custEnum As IEnumerator = customers.GetEnumerator()
custEnum.Reset()
Dim thisCustomer As Object
While custEnum.MoveNext()
    thisCustomer = custEnum.Current()
    ' Insert code to process this element of the collection.
End While

GetEnumerator は、列挙子オブジェクトを構築して返します。列挙子オブジェクトは、System.Collections 名前空間の IEnumerator インターフェイスを実装します。列挙子オブジェクトは、Current プロパティと、MoveNext メソッドおよび Reset メソッドを公開します。詳細については、「For Each...Next ステートメント (Visual Basic)」を参照してください。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Collection.GetEnumerator メソッド

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

Collection を反復処理する列挙子を返します。

名前空間: System.Collections.ObjectModel
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function GetEnumerator As
 IEnumerator(Of T)
Dim instance As Collection(Of
 T)
Dim returnValue As IEnumerator(Of
 T)

returnValue = instance.GetEnumerator
public IEnumerator<T> GetEnumerator ()

戻り値
Collection の IEnumerator。

解説解説

C# 言語の foreach ステートメント (C++ の場合は for each、Visual Basic の場合は For Each) を使用することで列挙子の複雑さを回避できます。したがって、列挙子を直接操作するのではなく、foreach の使用をお勧めします。

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

最初に、列挙子はコレクションの最初の要素の前に配置されます。この位置では、Current が未定義です。したがって、Current の値を読み取る前に、MoveNext を呼び出して、コレクションの最初の要素に列挙子を進める必要があります。

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

MoveNext がコレクションの末尾を過ぎると、列挙子はコレクションの最後の要素の後ろに配置され、MoveNext は false を返します。列挙子がこの位置にある場合、以降、MoveNext を呼び出しても false が返されます。MoveNext への最後の呼び出しで false が返された場合は、Current が未定義です。Current を、再度、コレクションの最初の要素に設定することはできません。列挙子の新しいインスタンスを作成する必要があります。

コレクションが変更されない限り、列挙子は有効なままです。要素の追加、変更、削除などの変更がコレクションに対して実行されると、列挙子は回復不可能な無効状態になり、動作は未定義になります。

列挙子はコレクションへの排他アクセス権を持たないため、コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。すべての列挙処理が終わるまでコレクションをロックすることにより、列挙処理でのスレッド セーフを確保できます。コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。

System.Collections.Generic のコレクションの既定の実装は同期されません。

このメソッドは O(1) 操作です。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

Collection.GetEnumeratorのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   



Collection.GetEnumeratorのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS