web-dev-qa-db-fra.com

Do .. While loop in C #?

Comment écrire une boucle Do .. While en C #?

(Edit: je suis un programmeur VB.NET qui essaie de passer à C #, alors j’ai une expérience de la syntaxe .NET/VB. Merci!)

21
Srikrishna Sallam

La forme générale est:

do
{
   // Body
} while (condition);

condition est une expression de type bool.

Personnellement, j’écris rarement des boucles do/while - les boucles for, foreach et droites while sont beaucoup plus courantes dans mon expérience. Ce dernier est:

while (condition)
{
    // body
}

La différence entre while et do...while est que, dans le premier cas, le corps sera jamais exécuté si la condition est fausse pour commencer - alors que dans le dernier cas, il est toujours exécuté une fois avant que la condition ne soit évaluée.

44
Jon Skeet

Puisque vous avez mentionné que vous veniez de VB.NET, je vous suggère fortement de vérifier ce lien pour afficher les comparaisons. Vous pouvez également utiliser this wensite pour convertir VB en C # et vice versa - pour jouer avec votre code VB existant et voir à quoi il ressemble en C #, y compris les boucles et autres éléments. sous le fils ..

Pour répondre à la question de la boucle, vous voulez simplement faire quelque chose comme:

while(condition)
{
   DoSomething();
}

Vous pouvez aussi faire - alors que comme ceci:

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

Voici un autre traducteur de code que j’ai utilisé avec succès, et un autre excellent C # -> site de comparaison VB . Bonne chance! 

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

C'est assez surprenant que personne n'ait encore mentionné l'exemple classique de la construction do..while. Do..while est la voie à suivre lorsque vous voulez exécuter du code, vérifier ou vérifier quelque chose (normalement en fonction de ce qui s'est passé pendant l'exécution de ce code), et si vous n'aimez pas le résultat, recommencez à nouveau. C’est exactement ce dont vous avez besoin lorsque vous souhaitez une entrée utilisateur qui respecte certaines contraintes:

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

C'est une forme assez générique: quand la condition est assez simple, il est courant de la placer directement sur la construction de la boucle (entre les crochets après le mot-clé "while"), plutôt que d'avoir une méthode pour la calculer.

Les concepts clés de cette utilisation sont que vous devez demander l’entrée de l’utilisateur au moins une fois (dans le meilleur des cas, l’utilisateur l’aura bien compris du premier coup); et que la condition n’a vraiment aucun sens tant que le corps n’a pas exécuté au moins une fois. Chacune de ces astuces est bonne, bien qu’il s’agisse d’un outil de travail, les deux ensemble constituent presque une garantie.

2
Edurne Pascual

La réponse de Jon Skeet est correcte et excellente, bien que je voudrais donner un exemple pour ceux qui ne connaissent pas while et do-while en c #:

int i=0;
while(i<10)
{
    Console.WriteLine("Number is {0}", i);
    i++;
}

et:

int i=0;
do
{
    Console.WriteLine("Number is {0}", i);
    i++;
}while(i<10)

les deux sorties:

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

comme on pouvait s'y attendre. Cependant, il est important de comprendre que la boucle do-while exécute toujours le corps la première fois, quelle que soit la vérification. Cela signifie que si nous modifions la valeur initiale de i en 100, nous obtiendrons des résultats très différents.

int i=100;
while(i<10)
{
    Console.WriteLine("Number is {0}", i);
    i++;
}

et:

int i=100;
do
{
    Console.WriteLine("Number is {0}", i);
    i++;
}while(i<10)

Maintenant, la boucle while ne génère en réalité aucune sortie:

cependant, la boucle do-while génère ceci:

Number is 100

bien qu’il soit bien au-dessus de 10 ans. Ceci est dû au comportement unique d’une boucle do-while à toujours être exécutée une fois, contrairement à une boucle while normale.

1
Firestar9114

Voici un exemple simple qui imprimera quelques chiffres:

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

Une autre méthode serait

using System;

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

En plus de la réponse d'Anthony Pegram, vous pouvez également utiliser la boucle while, qui vérifie la condition AVANT d'entrer dans la boucle.

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