Advanced  Services for each Schleife Back Next Up Home

for each für Arrays

for each für Arrays primitiver Datentypen

Geben wir uns zunächst ein Array mit einem primitiven Datentyp vor:

int[] arr = { 4, 5, 6, 2, 3, 4 } ;

Die bisherige Form der for-Schleife stammt zwar von C++ ab, ist aber konzeptionell sehr viel älter und stammt sozusagen aus der Gründerzeit der Programmierung. Die folgende Ausgabe eines Arrays ist zwar gut lesbar, aber doch relativ aufwendig:

// bisher
for(int i=0 ; i<arr.length; i++)
   Console.WriteLine(arr[i]);

Die neue Syntax, die u.a. in C# bereits seit längerem verwendet wird, ist stark vereinfacht und trotzdem gut, wenn nicht sogar besser lesbar. In C# wurde dazu in als neues Schlüsselwort eingeführt.

// mit foreach
foreach(int elem in arr)
   Console.WriteLine(elem);

Den Kopf der erweiterten for-Schleife liest man am besten als "für jedes elem(-ent) in arr".


for each für Arrays nichtprimitiver Datentypen

Es spielt keine Rolle, welchen Typ das Array hat, auch für Arrays aus Objekten funktioniert die erweiterte for-Schleife genauso. Das folgende Beispiel definiert ein kleines Array von Strings und gibt diese auf die Konsole aus.

String[]  arr = { "null", "eins", "zwei", "drei" };

// alt
for (int i=0; i < arr.length; i++ )
   Console.WriteLine(arr[i]);

// mit foreach
foreach(String elem in arr)
   Console.WriteLine(elem);

Natürlich kann man auch Instanzen selbstgeschriebener Klassen zu einem Array zusammenfassen und mit foreach abhandeln. Das folgende Beispiel bezieht sich auf die Klasse Person und geht davon aus, daß die Klasse über eine Methode println() verfügt, mit der man Vor- und Nachnamen einer Person auf die Konsole ausgeben kann. Hier wird sehr deutlich, welche Vereinfachung die neue Form der Schleife darstellt.

Person[]  parr = { new Person("Rose", "Ausländer") ,
                   new Person("Heinrich", "Heine") ,
                   new Person("Else", "Lasker-Schüler") };

// alt
for (int i=0; i< parr.length; i++ )
   parr[i].println();

// mit foreach
foreach(Person elem in parr)
   elem.println();

Im Hintergrund wird immer noch die alte Schleifenform verwendet. Der Compiler kann eben diese Syntax verstehen und in die herkömmliche übersetzen.

Valid XHTML 1.0 Strict top Back Next Up Home