(0) exportieren Drucken
Alle erweitern

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)

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

Die generische Version dieser Schnittstelle finden Sie unter System.Collections.Generic.IEnumerable.

Hinweise für Implementierer IEnumerable muss für eine Unterstützung der foreach-Semantik von Microsoft Visual Basic implementiert sein. COM-Klassen, die Enumeratoren zulassen, implementieren diese Schnittstelle ebenfalls.

Im folgenden Codebeispiel wird die Implementierung der IEnumerable-Schnittstelle und der IEnumerator Schnittstelle für eine benutzerdefinierte Auflistung veranschaulicht. In diesem Beispiel werden Member dieser Schnittstellen nicht explizit aufgerufen, sondern zur Unterstützung der Verwendung von foreach (for each in Visual Basic) implementiert.

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

    public IEnumerator 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;
    }

    public object 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 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen:
© 2014 Microsoft