この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

IEnumerable インターフェイス

 

非ジェネリック コレクションに対する単純な反復処理をサポートする列挙子を公開します。

この型の .NET Framework ソース コードを参照するを参照してください。、 Reference Sourceです。

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

[GuidAttribute("496B0ABE-CDEE-11d3-88E8-00902754C43A")]
[ComVisibleAttribute(true)]
public interface IEnumerable

名前説明
System_CAPS_pubmethodGetEnumerator()

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

名前説明
System_CAPS_pubmethodAsParallel()

オーバーロードされます。クエリの並列化を有効にします。(ParallelEnumerable によって定義されています。)

System_CAPS_pubmethodAsQueryable()

オーバーロードされます。 IEnumerableIQueryableに変換します。 (Queryable によって定義されています。)

System_CAPS_pubmethodCast<TResult>()

要素をキャスト、 IEnumerable 指定した型にします。(Enumerable によって定義されています。)

System_CAPS_pubmethodOfType<TResult>()

要素をフィルター処理、 IEnumerable 、指定した型に基づいています。(Enumerable によって定義されています。)

System_CAPS_noteメモ

この型の .NET Framework ソース コードを表示するを参照してください。、 Reference Sourceです。 ソース コードをオンラインで参照するか、リファレンスをダウンロードしてオフラインで表示するか、デバッグ中にソース (パッチや更新を含む) をステップ実行することができます。 instructionsを参照してください。

IEnumerable列挙できるすべての非ジェネリック コレクションの基本インターフェイスです。 このインターフェイスのジェネリック バージョンを参照してください。System.Collections.Generic.IEnumerable<T>です。 IEnumerable1 つのメソッドを含むGetEnumerator、返された、IEnumeratorです。 IEnumerator公開することにより、コレクションを反復処理する機能を提供するCurrentプロパティおよびMoveNextResetメソッドです。

実装することをお勧めIEnumerableIEnumeratorを有効にする、コレクション クラスで、 foreach (For Each Visual Basic で) 構文を実装するただしIEnumerableは必要ありません。 コレクションを実装しない場合IEnumerable、提供することでこの構文をサポートするために、反復子パターンを従う必要があります、GetEnumeratorインターフェイス、クラスまたは構造体を返すメソッド。 指定する必要がある Visual Basic を使用する場合にIEnumeratorによって返される実装GetEnumeratorです。 C# で開発してが含まれていますクラスを提供する必要がありますと、Currentプロパティ、およびMoveNextResetメソッドの定義に従ってIEnumerator、クラスが実装する必要はありませんが、IEnumeratorです。

実装することによってカスタム コレクションを反復処理するためのベスト プラクティスを次のコード例に示します、IEnumerableIEnumeratorインターフェイスです。 この例ではこれらのインターフェイスのメンバーは明示的に呼び出されないがの使用をサポートするために実装されてforeach(For Each Visual Basic で) コレクションを反復処理します。 この例は、完全なコンソール アプリです。 Visual Basic アプリをコンパイルするには、変更、スタートアップ オブジェクトSub Mainプロジェクトのプロパティページ。

実装する方法を示すサンプルについては、IEnumerableインターフェイスを参照してくださいImplementing the IEnumerable Interface in a Collection Class

using System;
using System.Collections;

// Simple business object.
public class Person
{
    public Person(string fName, string lName)
    {
        this.firstName = fName;
        this.lastName = lName;
    }

    public string firstName;
    public string lastName;
}

// Collection of Person objects. This class
// implements IEnumerable so that it can be used
// with ForEach syntax.
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];
        }
    }

// Implementation for the GetEnumerator method.
    IEnumerator IEnumerable.GetEnumerator()
    {
       return (IEnumerator) GetEnumerator();
    }

    public PeopleEnum GetEnumerator()
    {
        return new PeopleEnum(_people);
    }
}

// When you implement IEnumerable, you must also implement IEnumerator.
public class PeopleEnum : IEnumerator
{
    public Person[] _people;

    // Enumerators are positioned before the first element
    // until the first MoveNext() call.
    int position = -1;

    public PeopleEnum(Person[] list)
    {
        _people = list;
    }

    public bool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Person Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

class App
{
    static void Main()
    {
        Person[] peopleArray = new Person[3]
        {
            new Person("John", "Smith"),
            new Person("Jim", "Johnson"),
            new Person("Sue", "Rabon"),
        };

        People peopleList = new People(peopleArray);
        foreach (Person p in peopleList)
            Console.WriteLine(p.firstName + " " + p.lastName);

    }
}

/* This code produces output similar to the following:
 *
 * John Smith
 * Jim Johnson
 * Sue Rabon
 *
 */

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: