Книга: C# для профессионалов. Том II

foreach

foreach

C# предоставляет дополнительную инструкцию управления потоком выполнения foreach. foreach делает цикл по всем элементам массива или коллекции, не требуя явной спецификации индексов. Цикл foreach на массиве может выглядеть следующим образом. В этом примере предполагается, что MyArray является массивом double, и необходимо вывести каждое значение в консольном окне. Чтобы сделать это, используем следующий код:

foreach (double SomeElement in MyArray) {
 Console.WriteLine(SomeElement);
}

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

Запишем также приведенный выше цикл следующим образом:

foreach (double SomeElement in MyArray)
 Console.WriteLine(SomeElement);

так как блочные инструкции в C# работают таким же образом, как составные инструкции в C++.

Этот цикл будет иметь точно такой же результат, как и следующий:

for (int I=0; I < MyArray.Length; I++) {
 Console.WriteLine(MyArray[i]);
}

(Отметим, что вторая версия иллюстрирует также, как получить число элементов в массиве в C#. Мы рассмотрим, как массив объявляется в C#, позже.)

Отметим, однако, что в отличие от доступа к элементам массива, цикл foreach предоставляет к своим элементам доступ только для чтения. Следовательно, следующий код не будет компилироваться.

foreach (double SomeElement in MyArray)
 SomeElement *= 2; // Неверно, для SomeElement нельзя выполнить
                   // присваивание

Мы упомянули, что цикл foreach может использоваться для массивов или коллекций. Коллекция не имеет аналога в C++, хотя концепция стала общераспространённой в Windows благодаря ее использованию в VB и COM. Коллекция по сути является классом, который реализует интерфейс IEnumerable. Так как это включает поддержку из базовых классов, понятие коллекция объясняется в главе 7.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.772. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз