Поделиться через


for each, in

Выполняет итерацию по массиву или коллекции. Это нестандартное ключевое слово доступно как в проектах C++/CLI, так и в собственных проектах C++. Однако использование стандартного диапазона для инструкции (C++) предпочтительнее.

Все среды выполнения

Синтаксис

for each ( type identifier in expression ) {
statements
}

Параметры

type
Тип параметра identifier.

identifier
Переменная итерации, представляющая элемент коллекции. При identifier использовании оператора отслеживания ссылок можно изменить элемент.

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);
   }
}
abcd
Testing

Среда CLR

Замечания

Синтаксис СРЕДЫ CLR совпадает с синтаксисом "Все среды выполнения" , за исключением следующего.

expression
Выражение управляемого массива или коллекция. Элемент коллекции должен быть таким, чтобы компилятор может преобразовать его из Object identifier типа.

expressionвычисляет тип, реализующий IEnumerableIEnumerable<T>или тип, определяющий 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);
   }
}
abcd
Testing

См. также

Расширения компонентов для платформ среды выполнения
Диапазон на основе инструкции (C++)