Как написать Do.. While loop in С#?
(Edit: Я программист VB.NET, пытающийся сделать переход на С#, поэтому у меня есть опыт работы с синтаксисом .NET/VB. Спасибо!)
Как написать Do.. While loop in С#?
(Edit: Я программист VB.NET, пытающийся сделать переход на С#, поэтому у меня есть опыт работы с синтаксисом .NET/VB. Спасибо!)
Общий вид:
do
{
// Body
} while (condition);
Где condition
- некоторое выражение типа bool
.
Лично я редко пишу do/while - for
, foreach
и прямые циклы while
гораздо чаще встречаются в моем опыте. Последнее:
while (condition)
{
// body
}
Разница между while
и do...while
заключается в том, что в первом случае тело никогда не будет выполняться, если условие будет ложным для начала, тогда как в последнем случае он всегда выполняется один раз до того, как условие будет когда-либо оценено.
Поскольку вы упомянули, что пришли из VB.NET, я настоятельно рекомендую проверить эту ссылку, чтобы показать сравнения. Вы также можете использовать этот, чтобы конвертировать VB в С# и наоборот - чтобы вы могли играть с существующим кодом VB и видеть, как он выглядит в С#, включая петли и все остальное под сыном.
Чтобы ответить на вопрос цикла, вы просто хотите сделать что-то вроде:
while(condition)
{
DoSomething();
}
Вы также можете сделать - пока:
do
{
Something();
}
while(condition);
Здесь другой переводчик кода Я использовал с успехом, и другой отличный С# → сайт сравнения VB. Удачи!
//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);
Вот простой пример, который будет печатать некоторые числа:
int i = 0;
do {
Console.WriteLine(++i);
} while (i < 10);
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++;
}
}
}
Неудивительно, что никто еще не упомянул классический пример построения do..while. Do..while путь, когда вы хотите запустить какой-то код, проверить или проверить что-то (обычно в зависимости от того, что произошло во время выполнения этого кода), и если вам не нравится результат, начните заново. Это именно то, что вам нужно, когда вам нужен какой-то пользовательский ввод, который подходит для некоторых ограничений:
bool CheckInput(string input) { ... }
...
string input;
...
do {
input=Console.ReadLine();
} while(!CheckInput(input));
Это довольно общая форма: когда условие достаточно простое, оно обычно помещается непосредственно в конструкцию цикла (внутри скобок после ключевого слова "while" ), вместо того, чтобы иметь метод для вычисления.
Ключевыми понятиями в этом использовании являются то, что вы должны запрашивать ввод пользователя хотя бы один раз (в лучшем случае пользователь получит его с первой попытки); и что условие действительно не имеет особого смысла, пока тело не выполнило хотя бы один раз. Каждый из них - хорошие подсказки, которые делают... в то время как инструмент для работы, оба они вместе являются гарантией.
Помимо ответа Anthony Pegram, вы также можете использовать цикл while, который проверяет состояние перед тем, как попасть в цикл
while (someCriteria)
{
if (someCondition)
{
someCriteria = false;
// or you can use break;
}
if (ignoreJustThisIteration)
{
continue;
}
}