Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IEnumerable-Schnittstelle

 

Veröffentlicht: August 2016

Macht den Enumerator verfügbar, der eine einfache Iteration durch eine nicht generische Auflistung unterstützt.

Informationen zum Durchsuchen des .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source.

Namespace:   System.Collections
Assembly:  mscorlib (in mscorlib.dll)

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

NameBeschreibung
System_CAPS_pubmethodGetEnumerator()

Gibt einen Enumerator zurück, der eine Auflistung durchläuft.

NameBeschreibung
System_CAPS_pubmethodAsParallel()

Überladen. Ermöglicht die Parallelisierung einer Abfrage.(Definiert durch ParallelEnumerable.)

System_CAPS_pubmethodAsQueryable()

Überladen. Konvertiert ein IEnumerable zu einer IQueryable.(Definiert durch Queryable.)

System_CAPS_pubmethodCast<TResult>()

Wandelt die Elemente einer IEnumerable in den angegebenen Typ.(Definiert durch Enumerable.)

System_CAPS_pubmethodOfType<TResult>()

Filtert die Elemente einer IEnumerable auf Grundlage eines angegebenen Typs.(Definiert durch Enumerable.)

System_CAPS_noteHinweis

Die .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source. Sie können den Quellcode online Durchsuchen, Referenz für die Offlineanzeige herunterladen und schrittweise durchlaufen (inklusive Patches und Updates) während des Debuggens; see instructions.

IEnumerableist die Basisschnittstelle für alle nicht generischen Auflistungen, die aufgelistet werden können. Die generische Version dieser Schnittstelle finden Sie unter System.Collections.Generic.IEnumerable<T>. IEnumerableenthält eine einzelne Methode GetEnumerator, welche gibt eine IEnumerator. IEnumeratorbietet die Möglichkeit zum Durchlaufen der Auflistung, verfügbar machen, ein Current Eigenschaft und MoveNext und Reset Methoden.

Es ist eine bewährte Methode zum Implementieren IEnumerable und IEnumerator auf Ihre Auflistungsklassen So aktivieren Sie die foreach (For Each in Visual Basic) Syntax, jedoch implementieren IEnumerable ist nicht erforderlich. Wenn Ihre Sammlung keine implementiert IEnumerable, folgen Sie weiterhin das Iterator-Muster, um diese Syntax zu unterstützen, durch die Bereitstellung einer GetEnumerator Methode, die eine Schnittstelle, Klasse oder Struktur zurückgibt. Wenn Sie Visual Basic verwenden, müssen Sie angeben einer IEnumerator -Implementierung, die zurückgegebene GetEnumerator. Wenn mit c# entwickeln muss Geben Sie eine Klasse mit einer Current -Eigenschaft, und MoveNext und Reset Methoden wie beschrieben IEnumerator, aber die Klasse keinen implementieren IEnumerator.

Im folgenden Codebeispiel wird veranschaulicht, die bewährte Methode für die Iteration einer benutzerdefinierten Sammlung durch Implementieren der IEnumerable und IEnumerator Schnittstellen. In diesem Beispiel Member dieser Schnittstellen nicht explizit aufgerufen, aber sie implementiert werden, um die Verwendung von unterstützt foreach (For Each in Visual Basic) zum Durchlaufen der Auflistung. In diesem Beispiel wird eine vollständige Konsolen-app. Zum Kompilieren der Visual Basic-app ändern Sie die Startobjekt auf Sub Main des Projekts Eigenschaften Seite.

Ein Beispiel, das zeigt, wie zum Implementieren der IEnumerable -Schnittstelle, finden Sie unterImplementing 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
 *
 */

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: