(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

IEnumerable-Schnittstelle

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

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

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

Der IEnumerable-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetEnumeratorGibt einen Enumerator zurück, der eine Auflistung durchläuft.
Zum Seitenanfang

  NameBeschreibung
Öffentliche ErweiterungsmethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsAsParallelErmöglicht die Parallelisierung einer Abfrage. (Durch ParallelEnumerable definiert.)
Öffentliche ErweiterungsmethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsAsQueryableKonvertiert einen IEnumerable in einen IQueryable. (Durch Queryable definiert.)
Öffentliche ErweiterungsmethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCast<TResult>Wandelt die Elemente eines IEnumerable in den angegebenen Typ um. (Durch Enumerable definiert.)
Öffentliche ErweiterungsmethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsOfType<TResult>Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs. (Durch Enumerable definiert.)
Zum Seitenanfang

IEnumerable ist 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>. IEnumerable enthält eine einzelne Methode, GetEnumerator, die IEnumerator zurückgibt. IEnumerator bietet die Möglichkeit, durch die Auflistung durchlaufen, indem eine Eigenschaft Current und MoveNext und Reset-Methoden verfügbar macht.

Es wird empfohlen, IEnumerable und IEnumerator auf den Auflistungsklassen implementieren, um die Syntax foreach zu aktivieren (For Each in Visual Basic), z, IEnumerable zu implementieren nicht erforderlich. Wenn die Auflistung IEnumerable nicht implementiert, müssen Sie dem Iteratormuster noch ausführen, um diese Syntax zu unterstützen, indem Sie eine GetEnumerator-Methode bereitstellen, die zu einer Schnittstelle, einer Klasse oder Struktur zurückgibt. Wenn Sie Visual Basic verwenden, müssen Sie eine IEnumerator Implementierung bereitstellen, die von GetEnumerator zurückgegeben wird. Beim Entwickeln mit C# Sie bereitstellen müssen, muss eine Klasse, die Current enthält eine Eigenschaft und Methoden MoveNext und Reset, wie von IEnumerator, die Klasse beschrieben IEnumerator nicht implementieren.

Im folgenden Codebeispiel werden die empfohlenen Vorgehensweisen für das Durchlaufen einer benutzerdefinierten Auflistung, indem die IEnumerable und IEnumerator-Schnittstellen implementiert. In diesem Beispiel werden Member dieser Schnittstellen nicht explizit aufgerufen, sondern zur Unterstützung der Verwendung von foreach (For Each in Visual Basic) implementiert.

Ein Beispiel, das zeigt, wie die IEnumerable-Schnittstelle implementiert, finden Implementieren der IEnumerable-Schnittstelle in einer Auflistungsklasse


using System;
using System.Collections;

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

    public string firstName;
    public string lastName;
}

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];
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
       return (IEnumerator) GetEnumerator();
    }

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

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
 *
 */


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft