2010-03-29 4 views
19

Как написать Do .. While loop in C#?Do .. While loop in C#?

(Edit:.! Я программист VB.NET пытается сделать переход к C#, так что у меня есть опыт работы с .NET/VB синтаксис Спасибо)

+11

MSDN - это золотая жила для таких вопросов. C# 'do' ключевое слово: http://msdn.microsoft.com/en-us/library/370s1zax(VS.80).aspx –

+0

Поскольку вы работаете с VB.NET, ознакомьтесь с некоторыми из ссылок, которые я предоставил ниже, чтобы увидеть синтаксические сравнения для циклов, а также что-нибудь еще, что вам понадобится ниже. – dferraro

ответ

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

Ваше условие не является булевым выражением ... –

+0

@Jon Skeet - извините, я обычно VB – BlackICE

+1

do {} while (true); –

1

Вот простой пример, который будет напечатать некоторые цифры:

int i = 0; 

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

общая форма:

do 
{ 
    // Body 
} while (condition); 

Где condition некоторое выражение type bool.

Лично я редко пишу делать/в то время как петли - for, foreach и прямыми while петли гораздо более распространены в моем опыте. Последнее:

while (condition) 
{ 
    // body 
} 

Разница между while и do...while является то, что в первом случае тело будет никогда будет выполняться, если условие ложно, чтобы начать с - в то время как в последнем случае это всегда выполняется один раз перед условие всегда оценивается.

+11

И это ключ. Если вы хотите, чтобы это гарантированное первое время выполнялось, используйте do-while. В противном случае, хотя это действительно лучший подход. –

1
using System; 

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

Другой метод будет

using System; 

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

спасибо за ясное объяснение –

0

Помимо ответа Энтони Пеграм, вы можете также использовать время цикла, который проверяет состояние, прежде чем попасть в петлю

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

Довольно удивительно, что никто еще не упомянул классический пример построения do..while. Do..while путь, когда вы хотите запустить какой-то код, проверить или проверить что-то (обычно в зависимости от того, что произошло во время выполнения этого кода), и если вам не нравится результат, начните заново. Это именно то, что вам нужно, когда вы хотите, чтобы некоторые пользовательского ввода, который соответствует некоторым ограничениям:

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

Это довольно общая форма: когда условие достаточно просто, это общее, чтобы поместить его непосредственно на конструкции петли (внутри скобки после ключевого слова «while»), вместо того, чтобы иметь метод для его вычисления.

Ключевыми понятиями в этом использовании являются то, что вы должны запросить ввод пользователя хотя бы один раз (в лучшем случае пользователь получит его с первой попытки); и что условие действительно не имеет особого смысла, пока тело не выполнило хотя бы один раз. Каждый из них - хорошие подсказки, которые делают ... в то время как инструмент для работы, оба они вместе являются почти гарантией.

7

Поскольку вы упомянули, что пришли из VB.NET, я настоятельно рекомендую проверить this link, чтобы показать сравнения. Вы также можете использовать this wensite для преобразования VB в C# и наоборот - чтобы вы могли играть с существующим кодом VB и видеть, как он выглядит на C#, включая циклы и все остальное под сыном.

Чтобы ответить на вопрос петлю, вы просто хотите сделать что-то вроде:

while(condition) 
{ 
    DoSomething(); 
} 

Вы также можете сделать - в то время как это:

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

Вот another code translator я с успехом, и another great C#->VB comparison website. Удачи!

+0

спасибо за ссылки на страницу сравнения .. это именно то, что мне нужно –