2010-03-29 8 views
19

Wie schreibe ich eine Do .. While-Schleife in C#?Do .. Während Schleife in C#?

(Edit:.! Ich bin ein Programmierer VB.NET versucht, den Umzug in C# zu machen, so dass ich Erfahrung mit .NET/VB Syntax Dank)

+11

MSDN ist eine Goldmine für Fragen wie diese. C# 'do' Schlüsselwort: http://msdn.microsoft.com/en-us/library/370s1zax(VS.80).aspx –

+0

Da Sie von VB.NET kommen, überprüfen Sie einige der Links, die ich zur Verfügung gestellt habe unten, um Syntaxvergleiche für Schleifen zu sehen, sowie alles, was Sie sonst noch benötigen würden in der unteren Antwort – dferraro

Antwort

4
//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); 
+0

Ihre while-Bedingung ist kein boolescher Ausdruck ... –

+0

@Jon Skeet - sorry, ich bin normalerweise VB – BlackICE

+1

do {} while (true); –

1

Hier ist ein einfaches Beispiel, das wird drucken einige Zahlen:

int i = 0; 

do { 
    Console.WriteLine(++i); 
} while (i < 10); 
42

Die allgemeine Form ist:

do 
{ 
    // Body 
} while (condition); 

Wo condition einige Ausdruck Geben Sie bool ein.

Persönlich schreibe ich selten do/while-Schleifen - for, foreach und gerade while Schleifen sind viel häufiger in meiner Erfahrung. Letzteres ist:

while (condition) 
{ 
    // body 
} 

Der Unterschied zwischen while und do...while ist, dass im ersten Fall wird der Körper nie ausgeführt werden, wenn die Bedingung falsch ist, mit zu beginnen - während im letzteren Fall ist es immer einmal ausgeführt, bevor Die Bedingung wird jemals bewertet.

+11

Und das ist der Schlüssel .. Wenn Sie diese garantierte Erstausführung wünschen, verwenden Sie die Do-While. Ansonsten ist das zwar ein besserer Ansatz. –

1
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

using System; 

class MainClass 
{ 
    public static void Main() 
    { 
     int i = 0; 
     while(i <100) 
     { 
      Console.WriteLine("Number is {0}", i); 
      i++; 
     } 
    } 
} 
+0

danke für die klare erklärung –

0

Neben den Anthony Pegram Antwort wäre, können Sie auch die while-Schleife verwenden, die vor dem Einstieg in die Schleife

die Bedingung überprüft
while (someCriteria) 
{ 
    if (someCondition) 
    { 
     someCriteria = false; 
     // or you can use break; 
    } 
    if (ignoreJustThisIteration) 
    { 
     continue; 
    } 
} 
1

Ziemlich überraschend, dass noch niemand das klassische Beispiel für das do..while-Konstrukt erwähnt hat. Do..while ist der Weg zu gehen, wenn Sie etwas Code ausführen möchten, überprüfen oder überprüfen Sie etwas (normalerweise abhängig davon, was während der Ausführung dieses Codes passiert), und wenn Sie das Ergebnis nicht mögen, von vorne beginnen. Das ist genau das, was Sie brauchen, wenn Sie einige Benutzereingaben mögen, das einige Einschränkungen paßt:

bool CheckInput(string input) { ... } 
... 
string input; 
... 
do { 
    input=Console.ReadLine(); 
} while(!CheckInput(input)); 

Das ist eine ganz allgemeine Form: wenn die Bedingung einfach genug ist, ist es üblich, es direkt auf dem Schleifenkonstrukt zu platzieren (innerhalb der Klammern nach dem Schlüsselwort "while", anstatt eine Methode zum Berechnen zu haben.

Die Schlüsselkonzepte in dieser Verwendung sind, dass Sie die Benutzereingaben mindestens einmal anfordern müssen (im besten Fall wird der Benutzer es gleich beim ersten Versuch erhalten); und dass die Bedingung nicht wirklich viel Sinn macht, bis der Körper mindestens einmal ausgeführt hat. Jeder von diesen sind gute Hinweise, die tun .. während ist das Werkzeug für den Job, beide zusammen sind fast eine Garantie.

7

Da Sie erwähnt haben, dass Sie von VB.NET kommen, würde ich dringend empfehlen, this link auszuprobieren, um die Vergleiche zu zeigen. Sie können auch this wensite verwenden, um VB in C# umzuwandeln und umgekehrt - so können Sie mit Ihrem vorhandenen VB-Code spielen und sehen, wie er in C# aussieht, einschließlich Schleifen und alles andere unter dem Sohn ..

die Schleife Frage zu beantworten, Sie einfach tun wollen so etwas wie:

while(condition) 
{ 
    DoSomething(); 
} 

können Sie auch tun - während wie folgt aus:

do 
{ 
    Something(); 
} 
while(condition); 

Hier another code translator ich mit Erfolg verwendet haben, und another great C#->VB comparison website. Viel Glück!

+0

danke für die links auf der vergleichsseite .. das ist genau das was ich brauchte –

Verwandte Themen