2010-03-29 15 views
19

Come si scrive un ciclo Do .. While in C#?Do .. While loop in C#?

(Edit:.! Sono un programmatore VB.NET cercando di fare il passaggio a C#, così io ho esperienza con .NET/VB sintassi Grazie)

+11

MSDN è una miniera d'oro per domande come questa. Parola chiave C# 'do': http://msdn.microsoft.com/en-us/library/370s1zax(VS.80).aspx –

+0

Dato che vieni da VB.NET, controlla alcuni link che ho fornito di seguito per vedere i confronti di sintassi per i loop e qualsiasi altra cosa di cui hai bisogno in risposta qui sotto – dferraro

risposta

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

La tua condizione while non è un'espressione booleana ... –

+0

@Jon Skeet - scusa, sono normalmente VB – BlackICE

+1

do {} while (true); –

1

Ecco un semplice esempio che verrà stampare alcuni numeri:

int i = 0; 

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

La forma generale è:

do 
{ 
    // Body 
} while (condition); 

Dove condition è una certa espressione di digitare bool.

Personalmente Ho raramente scrivere do/while - for, foreach e dritto while cicli sono molto più comuni nella mia esperienza. Quest'ultimo è:

while (condition) 
{ 
    // body 
} 

La differenza tra while e do...while è che nel primo caso si mai essere eseguito il corpo se la condizione è falsa per cominciare - mentre nel secondo caso è sempre eseguita una volta prima la condizione è mai valutata.

+11

E questa è la chiave .. se vuoi che la prima esecuzione sia garantita, usa il do-while. Altrimenti, mentre è davvero un approccio migliore. –

1
using System; 

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

Un altro metodo sarebbe

using System; 

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

grazie per la chiara spiegazione –

0

A parte la risposta di Anthony Pegram, è possibile utilizzare anche il ciclo while, che controlla la condizione prima di entrare nel ciclo

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

Quite sorprendendo che nessuno ha ancora menzionato l'esempio classico del costrutto do..while. Do..while è la strada da percorrere quando si vuole eseguire del codice, controllare o verificare qualcosa (normalmente in base a ciò che è accaduto durante l'esecuzione di quel codice), e se il risultato non ti piace, ricomincia da capo. Questo è esattamente ciò che serve quando si vuole un po 'di input dell'utente che si inserisce alcuni vincoli:

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

che è una forma del tutto generica: quando la condizione è abbastanza semplice, è comune a posizionarlo direttamente sul costrutto di ciclo (all'interno della parentesi dopo la parola chiave "while"), piuttosto che avere un metodo per calcolarlo.

I concetti chiave in questo utilizzo sono che è necessario richiedere l'input dell'utente almeno una volta (nel migliore dei casi, l'utente lo otterrà correttamente al primo tentativo); e che la condizione non ha molto senso fino a quando il corpo non ha eseguito almeno una volta. Ognuno di questi è un buon suggerimento che ... è lo strumento per il lavoro, entrambi insieme sono quasi una garanzia.

7

Dal momento che hai menzionato che provenivi da VB.NET, ti suggerisco caldamente di controllare this link per mostrare i confronti. Puoi anche usare this wensite per convertire VB in C# e viceversa - così puoi giocare con il tuo codice VB esistente e vedere come appare in C#, inclusi loop e qualsiasi altra cosa sotto il figlio ..

per rispondere alla domanda del ciclo, è semplice voglia di fare qualcosa di simile:

while(condition) 
{ 
    DoSomething(); 
} 

È anche possibile fare - mentre in questo modo:

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

Ecco another code translator ho usato con successo, e another great C#->VB comparison website. In bocca al lupo!

+0

grazie per i link alla pagina di confronto .. questo è proprio quello di cui avevo bisogno –