для каждого внутри
Выполняет итерацию по массиву или коллекции. Это нестандартное ключевое слово доступно как в C++/CLI, так и в собственных проектах C++. Однако его использование не рекомендуется. Вместо этого рекомендуется использовать стандартный Основанное на диапазоне выражение for (C++).
Все среды выполнения
Синтаксис
for each (type identifier in expression) {
statements
}
Параметры
type
Тип параметра identifier.identifier
Переменная итерации, представляющая элемент коллекции. Если identifier представляет собой Оператор отслеживания ссылок (расширения компонентов C++), этот элемент можно изменять.expression
Выражение массива или коллекция. Элемент коллекции должен быть таким, чтобы компилятор мог преобразовать его в тип identifier.statements
Один или несколько операторов для выполнения.
Заметки
Оператор for each используется для итерации по коллекции. Можно изменять элементы в коллекции, но добавление или удаление элементов невозможно.
statements выполняются для каждого элемента массива или коллекции. После завершения итерации всех элементов коллекции управление передается следующему оператору после блока for each.
for each и in — это контекстно-зависимые ключевые слова.
Дополнительные сведения:
Как Выполняет перебор коллекции с каждым универсальный шаблон для
Как Выполняет перебор коллекции с каждым для определяемого пользователем
Среда выполнения Windows
Требования
Параметр компилятора: /ZW
Пример
В этом примере показано использование for each для итерации по строке.
// for_each_string1.cpp
// compile with: /ZW
#include <stdio.h>
using namespace Platform;
ref struct MyClass {
property String^ MyStringProperty;
};
int main() {
String^ MyString = ref new String("abcd");
for each ( char c in MyString )
wprintf("%c", c);
wprintf("/n");
MyClass^ x = ref new MyClass();
x->MyStringProperty = "Testing";
for each( char c in x->MyStringProperty )
wprintf("%c", c);
}
Выходные данные
Среда CLR
Заметки
Синтаксис CLR совпадает с синтаксисом для всех сред выполнения, за исключением следующего.
expression
Выражение управляемого массива или коллекция. Элемент коллекции должен быть таким, чтобы компилятор мог преобразовать его из Object в тип identifier.Результат вычисления expression представляет собой тип, реализующий IEnumerable, IEnumerable, или тип, определяющий метод GetEnumerator, который либо возвращает тип, реализующий IEnumerator, либо объявляет все методы, определенные в IEnumerator.
Требования
Параметр компилятора: /clr
Пример
В этом примере показано использование for each для итерации по строке.
// for_each_string2.cpp
// compile with: /clr
using namespace System;
ref struct MyClass {
property String ^ MyStringProperty;
};
int main() {
String ^ MyString = gcnew String("abcd");
for each ( Char c in MyString )
Console::Write(c);
Console::WriteLine();
MyClass ^ x = gcnew MyClass();
x->MyStringProperty = "Testing";
for each( Char c in x->MyStringProperty )
Console::Write(c);
}
Выходные данные