对于每个,

使用 for each 语句将数组或集合重复。

所有运行时

语法

for each (type identifier in expression) {
   statements
}

参数

  • type
    identifier 的类型。

  • identifier
    表示集合元素的迭代变量。 当 identifier 是跟踪引用时,可以修改元素。

  • expression
    数组表达式或集合。 编译器必须能够将集合元素转换为 identifier 类型。

  • statements
    要被执行的一个或多个语句。

备注

for each 语句用于循环访问集合。 修改集合中的元素是可能的,但是,您无法添加或删除元素。

语句 为数组或集合的每个元素执行。 当为集合中的所有元素完成迭代后,控制传递给 for each 块之后的下一个语句。

for each 和 in 是区分上下文的关键字;请参见 上下文相关的关键字(C++ 组件扩展) 有关更多信息。

在开发环境中,您通过显示关键字,(for each) 并按 F1 可以获取 F1 帮助。

有关更多信息,请参见

Windows 运行时

(没有此语言功能的窗口运行时特定备注。)

ms177202.collapse_all(zh-cn,VS.110).gif要求

编译器选项:/ZW

ms177202.collapse_all(zh-cn,VS.110).gif示例

示例

此示例演示如何将与 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);
}

Output

  
  

公共语言运行时

下表列出了特定于 C++/CLI 在 所有运行时 部分显示的语法的差异。

参数

  • 表达式
    托管数组表达式或集合。 编译器必须能够转换从 Object 的集合元素转换为 标识符 类型。

    表达式 计算为实现 IEnumerableIEnumerable<T>或一个类型定义了一个 GetEnumerator 方法的类型。 在后一种情况下,GetEnumerator 如果其中的一个返回在 IEnumerator 实现 IEnumerator 或声明所有方法中定义的类型。

ms177202.collapse_all(zh-cn,VS.110).gif要求

编译器选项:/clr

ms177202.collapse_all(zh-cn,VS.110).gif示例

示例

此示例演示如何将与 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);
}

Output

  
  

请参见

概念

适用于运行时平台的组件扩展