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

ArrayList.GetEnumerator-Methode: ()

 

Veröffentlicht: Oktober 2016

Gibt einen Enumerator für die gesamte ArrayList zurück.

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

public virtual IEnumerator GetEnumerator()

Rückgabewert

Type: System.Collections.IEnumerator

Ein IEnumerator für die gesamte ArrayList.

Die foreach-Anweisung der Programmiersprache C# (for each in Visual Basic) verbirgt die Komplexität der Enumeratoren. Daher empfiehlt es sich, foreach zu verwenden und den Enumerator nicht direkt zu ändern.

Mit Enumeratoren können die Daten in der Auflistung zwar gelesen, jedoch nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.

Zu Beginn wird der Enumerator vor das erste Element in der Auflistung positioniert. Reset setzt den Enumerator ebenfalls auf diese Position zurück. An dieser Position ist Current nicht definiert. Daher muss der Enumerator durch einen Aufruf von MoveNext auf das erste Element der Auflistung gesetzt werden, bevor der Wert von Current gelesen werden kann.

Current gibt solange dasselbe Objekt zurück, bis MoveNext oder Reset aufgerufen wird. MoveNext legt Current auf das nächste Element fest.

Wenn MoveNext übergibt, die am Ende der Auflistung der Enumerator hinter dem letzten Element in der Auflistung positioniert ist und MoveNext gibt false. Wann ist der Enumerator an dieser Position nachfolgende Aufrufe von MoveNext auch zurückgeben false. Wenn der letzte Aufruf MoveNext zurückgegebene false, Current ist nicht definiert. Um Current wieder auf das erste Element der Auflistung festzulegen, können Sie Reset gefolgt von MoveNext aufrufen.

Ein Enumerator bleibt gültig, solange die Auflistung unverändert ist. Werden an der Auflistung Änderungen wie z. B. Hinzufügen, Bearbeiten oder Entfernen von Elementen vorgenommen, verliert der Enumerator unwiederbringlich seine Gültigkeit und sein Verhalten ist nicht definiert.

Der Enumerator hat keinen exklusiven Zugriff auf die Auflistung; daher ist die Enumeration einer Auflistung systembedingt kein threadsicheres Verfahren. Um während der Enumeration Threadsicherheit zu garantieren, können Sie die Auflistung während der gesamten Enumeration sperren. Um den Lese- und Schreibzugriff auf diese Auflistung durch mehrere Threads zuzulassen, müssen Sie eine eigene Synchronisierung implementieren.

Diese Methode ist ein o(1)-Vorgang.

Das folgende Beispiel ruft den Enumerator für ein ArrayList, und der Enumerator für einen Bereich von Elementen in der ArrayList.

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList colors = new ArrayList();
        colors.Add("red");
        colors.Add("blue");
        colors.Add("green");
        colors.Add("yellow");
        colors.Add("beige");
        colors.Add("brown");
        colors.Add("magenta");
        colors.Add("purple");

        IEnumerator e = colors.GetEnumerator();
        while (e.MoveNext())
        {
            Object obj = e.Current;
            Console.WriteLine(obj);
        }

        Console.WriteLine();

        IEnumerator e2 = colors.GetEnumerator(2, 4);
        while (e2.MoveNext())
        {
            Object obj = e2.Current;
            Console.WriteLine(obj);
        }
    }
}

/* This code example produces
   the following ouput:
    red
    blue
    green
    yellow
    beige
    brown
    magenta
    purple

    green
    yellow
    beige
    brown
 */

Universelle Windows-Plattform
Verfügbar seit 10
.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: