2010-03-29 28 views
19

¿Cómo se escribe un bucle Do .. While en C#?Do .. While loop en C#?

(Edit:.! Soy un programador VB.NET tratando de hacer el movimiento a C#, así que tienen experiencia con NET/VB sintaxis Gracias)

+11

MSDN es una mina de oro para preguntas como esta. C# 'do' palabra clave: http://msdn.microsoft.com/en-us/library/370s1zax(VS.80).aspx –

+0

Dado que vienes de VB.NET, echa un vistazo a algunos de los enlaces que he proporcionado a continuación para ver las comparaciones de sintaxis para bucles, así como cualquier otra cosa que necesite en la respuesta siguiente – dferraro

Respuesta

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

Su condición while no es una expresión booleana ... –

+0

@Jon Skeet - lo siento, normalmente soy VB – BlackICE

+1

do {} while (true); –

1

Aquí hay un ejemplo simple que se imprimir algunos números:

int i = 0; 

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

La forma general es:

do 
{ 
    // Body 
} while (condition); 

Dónde condition es alguna expresión de tipo bool.

personalmente rara vez escribir do/while - for, foreach y while bucles rectos son mucho más comunes en mi experiencia. Este último es:

while (condition) 
{ 
    // body 
} 

La diferencia entre while y do...while es que en el primer caso, el cuerpo va a Nunca se ejecutará si la condición es falsa para empezar - mientras que en este último caso siempre ha ejecutado una vez antes la condición es alguna vez evaluada.

+11

Y esa es la clave ... si quieres esa primera ejecución garantizada, utiliza el do-while. De lo contrario, si bien es un mejor enfoque. –

1
using System; 

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

Otro método sería

using System; 

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

gracias por la clara explicación –

0

Aparte de la respuesta de la Anthony Pegram, puede utilizar también el bucle while, que comprueba la condición antes de entrar en el bucle

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

Muy sorprendente que nadie ha mencionado aún el ejemplo clásico para el constructo do ... while. Hazlo ... es el camino a seguir cuando quieres ejecutar algún código, verificar o verificar algo (normalmente dependiendo de lo que sucedió durante la ejecución de ese código), y si no te gusta el resultado, comienza de nuevo. Esto es exactamente lo que necesita cuando quieres algo de la entrada del usuario que se ajuste a algunas limitaciones:

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

Esa es una forma genérica: cuando la condición es bastante simple, es común colocar directamente en la construcción de bucle (dentro de la corchetes después de la palabra clave "while"), en lugar de tener un método para calcularlo.

Los conceptos clave en este uso son que debe solicitar la entrada del usuario al menos una vez (en el mejor de los casos, el usuario lo obtendrá al primer intento); y que la condición realmente no tiene mucho sentido hasta que el cuerpo haya ejecutado al menos una vez. Cada uno de estos son buenos consejos que lo hacen ... mientras que es la herramienta para el trabajo, ambos juntos son casi una garantía.

7

Como mencionó que venía de VB.NET, le sugiero que consulte this link para ver las comparaciones. También puede usar this wensite para convertir VB a C# y viceversa, para que pueda jugar con su código VB existente y ver cómo se ve en C#, incluyendo bucles y cualquier otra cosa debajo del hijo.

Para responder a la pregunta bucle, sencilla quieren hacer algo como:

while(condition) 
{ 
    DoSomething(); 
} 

También puede hacer - mientras que de esta manera:

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

Aquí es another code translator que he usado con éxito, y another great C#->VB comparison website. ¡Buena suerte!

+0

gracias por los enlaces a la página de comparación ... esto es justo lo que necesitaba –