В языке C# поддерживаются основные операторы циклов типа for и while, а также новый оператор foreach.

Начнем сразу с примера цикла for:

int k = Int32.Parse(Console.ReadLine());
int sum=0;
for(int i=1; i<=k; i++){
sum+=i;
}
Console.WriteLine(sum);
Этот пример подсчитывает сумму чисел от 1 до введенного пользователем числа k. Сумма записывается в переменную sum и выводится на экран.

Очень часто циклы используются для некоторых действий с массивами. Так как нумерация элементов массива идет с нуля, то типичный цикл будет выглядеть так:

int[] a = {-5, 4, 55};
int sum=0;
for(int i=0; i&lt;3; i++){
sum+=a[i];
}
В этом примере начальное значение для счетчика цикла равно нулю, и в условии продолжения цикла мы пишем знак "меньше", после которого ставится количество элементов в массиве. Разумеется, если в цикле должен выполнится только один оператор, то фигурные скобки можно не писать. Тут все, как в других C/C++-подобных языках.

Теперь рассмотрим пример цикла foreach:

int[] m = {-5, 4, 10};
int sum=0;
foreach(int i in m){
sum+=i;
}
В данном примере мы суммируем все элементы массива m, записывая сумму в sum.

В приведенном примере наш цикл перебирает все элементы массива m. На это нам указывает строка

...
foreach(int i in m){
...
которая интерпретируется так: для каждого целого числа из массива m делам что-то там. Если бы элементами массива были бы не целые, а, скажем, вещественные, то мы записали бы что-то вроде:

...
foreach(float i in m){
...
Т. е. мы пишем именно тип элементов массива. На самом деле foreach используется не только для массивов, но и для других объектов (например, для хэш-таблиц). Но это будет рассмотрено в следующих статьях.

Циклы while, do-while
Циклы while бывают двух видов - собственно цикл while и do-while. Оба эти цикла используются, как правило, тогда, когда точно не известно, сколько раз цикл должен выполнится. Например, при вводе пользователем пароля или при подсчете чего-либо с определенной точностью. Оба эти цикла будут выполняться до тех пор, пока условие в круглых скобках после слова while будет истинно. Как только условие станет равным false, выполнение цыкла прекращается. Самое важное отличие между while и do-while в том, что while может не выполниться ни одного раза, тогда как do-while по крайней мере один раз выполнится. Вот примеры их использования:

string password;
do{
password=Console.ReadLine();
}while(password!="wi98zK");
int k=0; //Количество попыток
//заводим новую последовательность случайных чисел
Random rnd=new Random(112); //Пишем любой параметр
while(rnd.Next(1, 6)!=5)
{
k++;
};
Console.WriteLine("С "+(k+1).ToString()+"-го раза выпало 5");
В первом примере цикл будет вращаться до тех пор, пока пользователь не введет правильный пароль (wi98zK), во втором - пока некоторое случайное число не окажеться равным 5. При этом если число с самого начала оказалось равным пяти, то цикл вообще выполняться не будет.

Циклы while, for и do-while работают точно так же, как и в языках C и C++. Ключевое слово foreach — это новинка, появившаяся в языке C#. Цикл foreach используется для перебора элементов в коллекции. Коллекцией может быть либо экземпляр соответствующего класса, либо массив (как на приведенном выше примере). Синтаксис для foreach несколько отличается от синтаксиса цикла for: здесь не требуется управления итерацией и использования индексной переменной. Все, что необходимо указать, — это тип элементов в коллекции (например, Int32 на приведенном выше примере), имя переменной для текущего элемента (i на приведенном выше примере) и имя коллекции (myArray на приведенном выше примере).

© Hintax