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

IEnumerable.GetEnumerator メソッド

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

コレクション反復処理する列挙子を返します

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

Function GetEnumerator As IEnumerator(Of
 T)
Dim instance As IEnumerable(Of
 T)
Dim returnValue As IEnumerator(Of
 T)

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

戻り値
コレクション反復処理するために使用できる IEnumerator。

解説解説

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

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

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

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

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

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

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

System.Collections.Generic 名前空間コレクション既定実装同期されません。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IEnumerable ジェネリック インターフェイス
IEnumerable メンバ
System.Collections.Generic 名前空間
IEnumerator

IEnumerable.GetEnumerator メソッド

コレクション反復処理する列挙子を返します

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

Function GetEnumerator As IEnumerator
Dim instance As IEnumerable
Dim returnValue As IEnumerator

returnValue = instance.GetEnumerator
IEnumerator GetEnumerator ()
IEnumerator^ GetEnumerator ()
IEnumerator GetEnumerator ()

戻り値
コレクション反復処理するために使用できる IEnumerator オブジェクト

解説解説

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

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

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

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

MoveNextコレクション末尾を過ぎると、列挙子はコレクション最後要素後ろ配置されMoveNextfalse返します列挙子がこの位置にある場合以降MoveNext呼び出してfalse返されます。MoveNext への最新呼び出しfalse返され場合は、Current未定義です。Currentコレクション最初要素に再び設定するには、Reset呼び出してから、MoveNext呼び出します。

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

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

使用例使用例

カスタム コレクションでの IEnumerable インターフェイス実装次のコード例示します。この例では、GetEnumerator明示的に呼び出されていませんが、foreach (Visual Basic では for each) の使用サポートするために実装されています。このコード例は、IEnumerable インターフェイストピック取り上げているコード例一部です。

Public Class People
    Implements IEnumerable

    Private _people() As Person

    Public Sub New(ByVal
 pArray() As Person)
        _people = New Person(pArray.Length - 1) {}

        Dim i As Integer
        For i = 0 To pArray.Length - 1
            _people(i) = pArray(i)
        Next i
    End Sub

    Public Function GetEnumerator() As
 IEnumerator _
      Implements IEnumerable.GetEnumerator

        Return New PeopleEnum(_people)
    End Function

End Class
public class People : IEnumerable
{
    private Person[] _people;
    public People(Person[] pArray)
    {
        _people = new Person[pArray.Length];

        for (int i = 0; i < pArray.Length;
 i++)
        {
            _people[i] = pArray[i];
        }
    }

    public IEnumerator GetEnumerator()
    {
        return new PeopleEnum(_people);
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からIEnumerable.GetEnumeratorを検索した結果を表示しています。
Weblioに収録されているすべての辞書からIEnumerable.GetEnumeratorを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からIEnumerable.GetEnumerator を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IEnumerable.GetEnumerator」の関連用語











IEnumerable.GetEnumeratorのお隣キーワード
検索ランキング

   

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



IEnumerable.GetEnumeratorのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS