Оператор foreach допускает циклическое обращение к массиву только в определенном порядке: от начала и до конца массива, поэтому его применение кажется, на первый взгляд, ограниченным. Но на самом деле это не так. В большом числе алгоритмов, самым распространенным из которых является алгоритм поиска, требуется именно такой механизм. В качестве примера ниже приведена программа, в которой цикл foreach используется для поиска в массиве определенного значения. Как только это значение будет найдено, цикл прервется.
// Поиск в массиве с помощью оператора цикла foreach.
using System;
class Search {
static void Main {
int[] nums = new int [10]; int val;
bool found = false;
// Задать первоначальные значения элементов массива nums. for (int i = 0; i < 10; i++) nums[i] = i;
val = 5;
// Использовать цикл foreach для поиска заданного // значения в массиве nums. foreach(int х in nums) { if(x == val) {
found = true; break;
}
}
if(found)
Console.WriteLine("Значение найдено!");
}
}
При выполнении этой программы получается следующий результат.
Значение найдено!
Оператор цикла
foreachотлично подходит для такого применения, поскольку при поиске в массиве приходится анализировать каждый его элемент. К другим примерам применения оператора циклаforeachотносится вычисление среднего, поиск минимального или максимального значения среди ряда заданных значений, обнаружение дубликатов и т.д. Как будет показано далее в этой книге, оператор циклаforeachоказывается особенно полезным для работы с разными типами коллекций.Строки
С точки зрения регулярного программирования строковый тип данных
stringотносится к числу самых важных в С#. Этот тип определяет и поддерживает символьные строки. В целом ряде других языков программирования строка представляет собой массив символов. А в C# строки являются объектами. Следовательно, типstringотносится к числу ссылочных. И хотяstringявляется встроенным в C# типом данных,На самом деле класс типа
stringуже не раз применялся в примерах программ, начиная с главы 2, но это обстоятельство выясняется только теперь, когда очередь дошла до строк. При создании строкового литерала в действительности формируется строковый объект. Например, в следующей строке кода:Console.WriteLine("В C# строки являются объектами.");
текстовая строка
"В C# строки являются объектами. " автоматически преобразуется в строковый объект средствами С#. Следовательно, применение класса типаstringпроисходило в предыдущих примерах программ неявным образом. А в этом разделе будет показано, как обращаться со строками явным образом.Построение строк