Console.WriteLine('Сумма равна: ' + sum);
}
}
Выполнение этой программы дает следующий результат.
Значение элемента равно: 1 Значение элемента равно: 2 Значение элемента равно: 3 Значение элемента равно: 4
Значение
элемента
равно:
5
Значение
элемента
равно:
2
Значение
элемента
равно:
4
Значение
элемента
равно:
6
Значение
элемента
равно:
8
Значение
элемента
равно:
10
Значение
элемента
равно:
3
Значение
элемента
равно:
6
Значение
элемента
равно:
9
Значение
элемента
равно:
12
Значение
элемента
равно:
15
Сумма равна: 90
Оператор 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# строки являются объектами.');
