Freigeben über


Array.GetEnumerator-Methode

Gibt einen IEnumerator für das Array zurück.

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

Syntax

'Declaration
Public Function GetEnumerator As IEnumerator
'Usage
Dim instance As Array
Dim returnValue As IEnumerator

returnValue = instance.GetEnumerator
public IEnumerator GetEnumerator ()
public:
virtual IEnumerator^ GetEnumerator () sealed
public final IEnumerator GetEnumerator ()
public final function GetEnumerator () : IEnumerator

Rückgabewert

Ein IEnumerator für das Array.

Hinweise

Die foreach-Anweisung in C# (for each in 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 bearbeiten.

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

Anfangs wird der Enumerator vor dem ersten 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 das Aufrufen von MoveNext auf das erste Element der Auflistung festgelegt werden, bevor der Wert von Current gelesen werden kann.

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

Wenn MoveNext das Ende der Auflistung erreicht, wird der Enumerator nach dem letzten Element in der Auflistung positioniert, und MoveNext gibt false zurück. Wenn sich der Enumerator an dieser Position befindet, geben nachfolgende Aufrufe von MoveNext ebenfalls false zurück. Wenn beim letzten Aufruf von MoveNextfalse zurückgegeben wurde, ist Current nicht definiert. Um Current wieder auf das erste Element der Auflistung festzulegen, können Sie Reset gefolgt von MoveNext aufrufen.

Ein Enumerator bleibt so lange gültig, bis die Auflistung geändert wird. Wenn an der Auflistung Änderungen vorgenommen werden, z. B. durch Hinzufügen, Ändern oder Löschen von Elementen, ist der Enumerator unwiderruflich ungültig und das zugehörige Verhalten nicht definiert.

Der Enumerator hat keinen exklusiven Zugriff auf die Auflistung. Daher ist die Enumeration einer Auflistung systemintern keine threadsichere Prozedur. Um Threadsicherheit während der Enumeration zu gewährleisten, 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 eine O(1)-Operation.

Beispiel

Im folgenden Codebeispiel wird die Verwendung von GetEnumerator zum Auflisten der Elemente eines Arrays veranschaulicht.

Imports System

Public Class SamplesArray

   Public Shared Sub Main()

      ' Creates and initializes a new Array.
      Dim myArr(10) As [String]
      myArr(0) = "The"
      myArr(1) = "quick"
      myArr(2) = "brown"
      myArr(3) = "fox"
      myArr(4) = "jumped"
      myArr(5) = "over"
      myArr(6) = "the"
      myArr(7) = "lazy"
      myArr(8) = "dog"

      ' Displays the values of the Array.
      Dim i As Integer = 0
      Dim myEnumerator As System.Collections.IEnumerator = myArr.GetEnumerator()
      Console.WriteLine("The Array contains the following values:")
      While myEnumerator.MoveNext() And Not (myEnumerator.Current Is Nothing)
         Console.WriteLine("[{0}] {1}", i, myEnumerator.Current)
         i += 1
      End While 

   End Sub 'Main

End Class 'SamplesArray 


'This code produces the following output.
'
'The Array contains the following values:
'[0] The
'[1] quick
'[2] brown
'[3] fox
'[4] jumped
'[5] over
'[6] the
'[7] lazy
'[8] dog
using System;

public class SamplesArray  {
 
   public static void Main()  {
 
      // Creates and initializes a new Array.
      String[] myArr = new String[10];
      myArr[0] = "The";
      myArr[1] = "quick";
      myArr[2] = "brown";
      myArr[3] = "fox";
      myArr[4] = "jumped";
      myArr[5] = "over";
      myArr[6] = "the";
      myArr[7] = "lazy";
      myArr[8] = "dog";
 
      // Displays the values of the Array.
      int i = 0;
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      Console.WriteLine( "The Array contains the following values:" );
      while (( myEnumerator.MoveNext() ) && ( myEnumerator.Current != null ))
         Console.WriteLine( "[{0}] {1}", i++, myEnumerator.Current );

   }
 
}


/* 
This code produces the following output.

The Array contains the following values:
[0] The
[1] quick
[2] brown
[3] fox
[4] jumped
[5] over
[6] the
[7] lazy
[8] dog

*/
using namespace System;

int main()
{
   // Creates and initializes a new Array.
   array<String^>^myArr = gcnew array<String^>(10);
   myArr[ 0 ] = "The";
   myArr[ 1 ] = "quick";
   myArr[ 2 ] = "brown";
   myArr[ 3 ] = "fox";
   myArr[ 4 ] = "jumped";
   myArr[ 5 ] = "over";
   myArr[ 6 ] = "the";
   myArr[ 7 ] = "lazy";
   myArr[ 8 ] = "dog";
   
   // Displays the values of the Array.
   int i = 0;
   System::Collections::IEnumerator^ myEnumerator = myArr->GetEnumerator();
   Console::WriteLine( "The Array contains the following values:" );
   while ( (myEnumerator->MoveNext()) && (myEnumerator->Current != nullptr) )
      Console::WriteLine( "[{0}] {1}", i++, myEnumerator->Current );
}

/* 
This code produces the following output.

The Array contains the following values:
[0] The
[1] quick
[2] brown
[3] fox
[4] jumped
[5] over
[6] the
[7] lazy
[8] dog

*/
import System.*;

public class SamplesArray
{
    public static void main(String[] args)
    {
        // Creates and initializes a new Array.
        String myArr[] = new String[10];

        myArr.set_Item(0, "The");
        myArr.set_Item(1, "quick");
        myArr.set_Item(2, "brown");
        myArr.set_Item(3, "fox");
        myArr.set_Item(4, "jumped");
        myArr.set_Item(5, "over");
        myArr.set_Item(6, "the");
        myArr.set_Item(7, "lazy");
        myArr.set_Item(8, "dog");

        // Displays the values of the Array.
        int i = 0;
        System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();

        Console.WriteLine("The Array contains the following values:");
        while ((myEnumerator.MoveNext() && myEnumerator.get_Current() != null)) {
            Console.WriteLine("[{0}] {1}", System.Convert.ToString(i++), 
                myEnumerator.get_Current());
        }
    } //main
} //SamplesArray
 /* 
This code produces the following output.

The Array contains the following values:
[0] The
[1] quick
[2] brown
[3] fox
[4] jumped
[5] over
[6] the
[7] lazy
[8] dog

*/

Plattformen

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.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Array-Klasse
Array-Member
System-Namespace