For-Schleife
Eine Schleife ermöglicht es, einen Codeabschnitt beliebig oft auszuführen. Es gibt verschiedene Arten von Schleifen. In C# verwenden wir die for loop, wenn wir einen Codeabschnitt eine bestimmte Anzahl von Malen ausführen möchten.
Das Grundmuster (Syntax) einer for-Schleife ist wie folgt:
main.cs
123for(initiation; condition; operation) { // code to execute }
Betrachten wir ein Beispiel, in dem wir diese Syntax verwenden:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Hinweis
i++ist dasselbe wiei = i + 1. Es erhöht den Wert der Variablen um1. Entsprechend verringerti--den Wert um1.
int i = 0ist der Initialisierungsteil. Die Initialisierung erfolgt beim Start der Schleife. Zu Beginn der Schleife wird eine neue temporäre Variable namensierstellt und mit dem Wert0initialisiert;i < 10ist die Bedingung. Die Bedingung wird bei jeder Iteration (Wiederholung) der Schleife überprüft. Die Schleife führt den eingeschlossenen Codeblock aus, solange die Bedingung wahr ist;i++ist die Operation, die nach jeder Iteration ausgeführt wird. Die Operation ist üblicherweise eine Inkrementierung oder Dekrementierung. Da der Wert voninach jeder Iteration erhöht wird, wird die Bedingungi < 10nach 10 Iterationen falsch und die Schleife endet.
Es ist wichtig zu verstehen, dass alle drei Komponenten der for-Schleife — initialization, condition und operation — optional sind. Sie können jede davon weglassen, was jedoch das Verhalten der Schleife verändern kann.
Obwohl es nicht empfohlen wird, können Sie die Schleifenvariable außerhalb der Schleife deklarieren und den initialization-Teil leer lassen. Die Schleife funktioniert dann weiterhin, allerdings ist Vorsicht geboten, da dies zu unerwarteten Ergebnissen führen kann, wenn es nicht korrekt gehandhabt wird.
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Wir können den Teil operation auch entfernen und ihn am Ende des Codeblocks der Schleife platzieren. Die Schleife verhält sich genauso wie zuvor, da die Variable i weiterhin nach jeder Iteration inkrementiert wird.
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Beachten Sie, dass im obigen Code weiterhin ein Semikolon (;) in der Schleifensyntax an der Stelle steht, an der int i = 0 erwartet wurde. Dieses Semikolon muss immer vorhanden sein, unabhängig davon, ob eine Schleifenvariable erstellt wird oder nicht.
Auch das Entfernen der Schleifenbedingung ist möglich, führt jedoch dazu, dass die Schleife unendlich läuft, sofern sie nicht manuell beendet wird (was in späteren Kapiteln näher erläutert wird).
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Hinweis
Beide Semikolons in der Schleifensyntax
for(;;)wurden weiterhin eingefügt, da diese zwingend erforderlich sind, andernfalls zeigt der Compiler Fehler an.
Da sich der Wert von i bei jeder Iteration ändert, kann dies vorteilhaft genutzt werden. Zur Veranschaulichung folgt ein einfaches Programm, das den Wert von i bei jeder Iteration ausgibt:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Beachten Sie, dass die Schleife bei 9 endet, da sie mit der Ziffer 0 beginnt. Die Gesamtanzahl der Durchläufe betrug zehn. Die Initialisierung, die Bedingung und die Operation können angepasst werden, um die zehn geraden Zahlen von 2 bis 20 auszugeben.
Hinweis
Gerade Zahlen sind Zahlen, die durch
2teilbar sind. Zum Beispiel 2, 4, 6, 8, 10 usw. Gerade Zahlen schließen auch die Zahl0ein, aber in diesen Beispielen werden nur gerade Zahlen größer als0betrachtet.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Hinweis
i += 2ist eine kürzere Schreibweise füri = i + 2. Diese Syntax ist auch für andere Operatoren gültig, zum Beispieli -= 2,i *= 2,i /= 2,i %= 2usw.
Die Schleife beginnt mit 0 und erhöht den Wert von i bei jeder Iteration um 2. Die Bedingung wurde auf i <= 20 geändert, sodass die Schleife bei 20 endet.
Die obige Logik dient dem Verständnis der Funktionsweise einer for-Schleife. Es kann jedoch eine wesentlich einfachere Logik verwendet werden, um die ersten zehn geraden Zahlen auszugeben:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
In diesem Fall ist die Bedingung deutlich einfacher. Möchte man beispielsweise die ersten 27 geraden Zahlen ausgeben, müsste man beim vorherigen Verfahren wissen, welches die 27. gerade Zahl ist, um die Bedingung zu formulieren. In diesem Fall muss lediglich die Bedingung auf i <= 27 angepasst werden:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain more about the different types of loops in C#?
What happens if I omit all three components in the for loop?
Can you show an example of a for loop that runs infinitely?
Großartig!
Completion Rate verbessert auf 1.67
For-Schleife
Swipe um das Menü anzuzeigen
Eine Schleife ermöglicht es, einen Codeabschnitt beliebig oft auszuführen. Es gibt verschiedene Arten von Schleifen. In C# verwenden wir die for loop, wenn wir einen Codeabschnitt eine bestimmte Anzahl von Malen ausführen möchten.
Das Grundmuster (Syntax) einer for-Schleife ist wie folgt:
main.cs
123for(initiation; condition; operation) { // code to execute }
Betrachten wir ein Beispiel, in dem wir diese Syntax verwenden:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Hinweis
i++ist dasselbe wiei = i + 1. Es erhöht den Wert der Variablen um1. Entsprechend verringerti--den Wert um1.
int i = 0ist der Initialisierungsteil. Die Initialisierung erfolgt beim Start der Schleife. Zu Beginn der Schleife wird eine neue temporäre Variable namensierstellt und mit dem Wert0initialisiert;i < 10ist die Bedingung. Die Bedingung wird bei jeder Iteration (Wiederholung) der Schleife überprüft. Die Schleife führt den eingeschlossenen Codeblock aus, solange die Bedingung wahr ist;i++ist die Operation, die nach jeder Iteration ausgeführt wird. Die Operation ist üblicherweise eine Inkrementierung oder Dekrementierung. Da der Wert voninach jeder Iteration erhöht wird, wird die Bedingungi < 10nach 10 Iterationen falsch und die Schleife endet.
Es ist wichtig zu verstehen, dass alle drei Komponenten der for-Schleife — initialization, condition und operation — optional sind. Sie können jede davon weglassen, was jedoch das Verhalten der Schleife verändern kann.
Obwohl es nicht empfohlen wird, können Sie die Schleifenvariable außerhalb der Schleife deklarieren und den initialization-Teil leer lassen. Die Schleife funktioniert dann weiterhin, allerdings ist Vorsicht geboten, da dies zu unerwarteten Ergebnissen führen kann, wenn es nicht korrekt gehandhabt wird.
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Wir können den Teil operation auch entfernen und ihn am Ende des Codeblocks der Schleife platzieren. Die Schleife verhält sich genauso wie zuvor, da die Variable i weiterhin nach jeder Iteration inkrementiert wird.
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Beachten Sie, dass im obigen Code weiterhin ein Semikolon (;) in der Schleifensyntax an der Stelle steht, an der int i = 0 erwartet wurde. Dieses Semikolon muss immer vorhanden sein, unabhängig davon, ob eine Schleifenvariable erstellt wird oder nicht.
Auch das Entfernen der Schleifenbedingung ist möglich, führt jedoch dazu, dass die Schleife unendlich läuft, sofern sie nicht manuell beendet wird (was in späteren Kapiteln näher erläutert wird).
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Hinweis
Beide Semikolons in der Schleifensyntax
for(;;)wurden weiterhin eingefügt, da diese zwingend erforderlich sind, andernfalls zeigt der Compiler Fehler an.
Da sich der Wert von i bei jeder Iteration ändert, kann dies vorteilhaft genutzt werden. Zur Veranschaulichung folgt ein einfaches Programm, das den Wert von i bei jeder Iteration ausgibt:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Beachten Sie, dass die Schleife bei 9 endet, da sie mit der Ziffer 0 beginnt. Die Gesamtanzahl der Durchläufe betrug zehn. Die Initialisierung, die Bedingung und die Operation können angepasst werden, um die zehn geraden Zahlen von 2 bis 20 auszugeben.
Hinweis
Gerade Zahlen sind Zahlen, die durch
2teilbar sind. Zum Beispiel 2, 4, 6, 8, 10 usw. Gerade Zahlen schließen auch die Zahl0ein, aber in diesen Beispielen werden nur gerade Zahlen größer als0betrachtet.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Hinweis
i += 2ist eine kürzere Schreibweise füri = i + 2. Diese Syntax ist auch für andere Operatoren gültig, zum Beispieli -= 2,i *= 2,i /= 2,i %= 2usw.
Die Schleife beginnt mit 0 und erhöht den Wert von i bei jeder Iteration um 2. Die Bedingung wurde auf i <= 20 geändert, sodass die Schleife bei 20 endet.
Die obige Logik dient dem Verständnis der Funktionsweise einer for-Schleife. Es kann jedoch eine wesentlich einfachere Logik verwendet werden, um die ersten zehn geraden Zahlen auszugeben:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
In diesem Fall ist die Bedingung deutlich einfacher. Möchte man beispielsweise die ersten 27 geraden Zahlen ausgeben, müsste man beim vorherigen Verfahren wissen, welches die 27. gerade Zahl ist, um die Bedingung zu formulieren. In diesem Fall muss lediglich die Bedingung auf i <= 27 angepasst werden:
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Danke für Ihr Feedback!