Wie schreibe ich eine Do .. While-Schleife in C #?
(Bearbeiten: Ich bin ein VB.NET-Programmierer, der versucht, zu C # zu wechseln, daher habe ich Erfahrung mit der .NET/VB -Syntax. Danke!)
Die allgemeine Form lautet:
do
{
// Body
} while (condition);
Dabei ist condition
ein Ausdruck vom Typ bool
.
Persönlich schreibe ich selten do/while-Schleifen - for
, foreach
und gerade while
-Schleifen sind meiner Erfahrung nach viel häufiger. Letzteres ist:
while (condition)
{
// body
}
Der Unterschied zwischen while
und do...while
besteht darin, dass im ersten Fall der Body ausgeführt wird niemals / wird, wenn die Bedingung falsch ist, um mit zu beginnen.
Da Sie erwähnt haben, dass Sie von VB.NET kamen, würde ich dringend empfehlen, diesen Link auszuprobieren, um die Vergleiche anzuzeigen. Sie können auch this wensite verwenden, um VB in C # und umgekehrt zu konvertieren. So können Sie mit Ihrem vorhandenen VB - Code spielen und sehen, wie er in C # aussieht, einschließlich Loops und anderen Elementen unter dem sohn ..
Um die Schleifenfrage zu beantworten, möchten Sie einfach Folgendes tun:
while(condition)
{
DoSomething();
}
Sie können es auch tun - und zwar so:
do
{
Something();
}
while(condition);
Hier ist ein anderer Code-Übersetzer , den ich mit Erfolg verwendet habe, und eine weitere großartige C # -> VB-Vergleichs-Website . Viel Glück!
//remember, do loop will always execute at least once, a while loop may not execute at all
//because the condition is at the top
do
{
//statements to be repeated
} while (condition);
Sehr überraschend, dass noch niemand das klassische Beispiel für das do..while-Konstrukt erwähnt hat. Do..while ist der Weg, wenn Sie Code ausführen, etwas überprüfen oder überprüfen möchten (normalerweise abhängig davon, was während der Ausführung des Codes passiert ist) und wenn Sie das Ergebnis nicht mögen, beginnen Sie von vorne. Dies ist genau das, was Sie benötigen, wenn Sie Benutzereingaben wünschen, die einige Einschränkungen erfüllen:
bool CheckInput(string input) { ... }
...
string input;
...
do {
input=Console.ReadLine();
} while(!CheckInput(input));
Das ist schon eine generische Form: Wenn die Bedingung einfach genug ist, ist es üblich, sie direkt auf das Schleifenkonstrukt (in den Klammern nach dem Schlüsselwort "while") anzuordnen, anstatt eine Methode zur Berechnung zu haben.
Die wichtigsten Konzepte bei dieser Verwendung sind, dass Sie die Benutzereingabe mindestens einmal anfordern müssen (im besten Fall wird der Benutzer diese beim ersten Versuch richtig machen). und dass der Zustand erst dann wirklich sinnvoll ist, wenn der Körper mindestens einmal ausgeführt wurde. Jeder von ihnen ist ein guter Hinweis, der tun, während er das Werkzeug für die Arbeit ist. Beide zusammen sind fast eine Garantie.
Die Antwort von Jon Skeet ist korrekt und großartig, obwohl ich für diejenigen, die mit while
und do-while
nicht vertraut sind, ein Beispiel geben möchte:
int i=0;
while(i<10)
{
Console.WriteLine("Number is {0}", i);
i++;
}
und:
int i=0;
do
{
Console.WriteLine("Number is {0}", i);
i++;
}while(i<10)
werden beide ausgeben:
Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9
wie wir es erwarten würden. Es ist jedoch wichtig zu verstehen, dass die Do-While-Schleife den Body unabhängig von der Prüfung immer zum ersten Mal ausführt. Dies bedeutet, dass wir, wenn wir den Startwert von i auf 100 ändern, sehr unterschiedliche Ausgaben sehen werden.
int i=100;
while(i<10)
{
Console.WriteLine("Number is {0}", i);
i++;
}
und:
int i=100;
do
{
Console.WriteLine("Number is {0}", i);
i++;
}while(i<10)
Nun erzeugt die while-Schleife tatsächlich keine Ausgabe:
die do-while-Schleife erzeugt jedoch Folgendes:
Number is 100
dies liegt an dem einzigartigen Verhalten einer Do-While-Schleife, die im Gegensatz zu einer normalen While-Schleife immer einmal ausgeführt wird.
Hier ist ein einfaches Beispiel, das einige Zahlen druckt:
int i = 0;
do {
Console.WriteLine(++i);
} while (i < 10);
using System;
class MainClass
{
public static void Main()
{
int i = 0;
do
{
Console.WriteLine("Number is {0}", i);
i++;
} while (i < 100);
}
}
Eine andere Methode wäre
using System;
class MainClass
{
public static void Main()
{
int i = 0;
while(i <100)
{
Console.WriteLine("Number is {0}", i);
i++;
}
}
}
Abgesehen von der Antwort von Anthony Pegram können Sie auch die while-Schleife verwenden, die den Zustand überprüft, BEVOR Sie in die Schleife gelangen
while (someCriteria)
{
if (someCondition)
{
someCriteria = false;
// or you can use break;
}
if (ignoreJustThisIteration)
{
continue;
}
}