Конструкция for — самая удобная в тех ситуациях, когда вы точно знаете, сколько раз необходимо выполнить определенное действие. Если же вам точно неизвестно, сколько раз может потребоваться выполнение блока кода, гораздо удобнее конструкции while и do/while. Для того чтобы проиллюстрировать работу цикла с этими конструкциями, мы используем возможности С# в отношении работы с файлами. Для считывания информации из файлов в С# предусмотрен класс StreamReader, определенный внутри пространства имен System. IO. Обратите внимание, что экземпляр класса StreamReader создается как значение, возвращаемое статическим методом File.OpenText(). После открытия файла config.win вы можете обработать каждую его строку (то есть вывести ее на консоль) с использованием метода StreamReader.ReadLine():
try // Это на тот случай, если файла config.win на месте не окажется { // Открываем файл config.win StreamReader strReader = File.OpenText("C:\conf1g.win"); // Считываем каждую строку и выводим ее на консоль string strLine; while (null != (strLine = strReader.ReadLine())); Console.WriteLine(strLine); { // Файл необходимо закрыть strReader.Close(); } catch (FileNotFoundException e) { Console.WriteLine(e.Message); } }
Конструкция do/while очень похожа на while. Единственное отличие заключается в том, что при использовании do/while мы гарантируем, что соответствующий блок кода будет выполнен по крайней мере один раз (в обычном варианте while это совсем не гарантируется — например, в тех ситуациях, когда условие на продолжение цикла ложно с самого начала). Пример программного кода, в котором используется do/while:
string ans; do { Console.WriteLine("Продолжим? [yes], [no]: "); ans = Console.ReadLine(); } while (ans != "yes");