для каждого внутри

Выполняет итерацию по массиву или коллекции. Это нестандартное ключевое слово доступно как в 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);
}

Выходные данные

  
  

См. также

Основные понятия

Расширения компонентов для платформ среды выполнения