web-dev-qa-db-de.com

Do .. Während der Schleife in C #?

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!)

21

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.

44
Jon Skeet

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! 

7
dferraro
//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);
5
BlackICE

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.

2
Edurne Pascual

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.

1
Firestar9114

Hier ist ein einfaches Beispiel, das einige Zahlen druckt:

int i = 0;

do {
  Console.WriteLine(++i);
} while (i < 10);
1
John Feminella
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++;
        }
    }
}
1
Art W

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;
    }
}