for each,in

通过数组或集合迭代。 此非标准关键字在 C++/CLI 和本机 C++ 项目中可用。 但是,建议不使用它。 考虑改用标准 基于范围的 for 语句 (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

  测试

公共语言运行时

备注

CLR 语法与所有运行时语法相同,但有以下差异。

  • expression
    托管的数组表达式或集合。 集合元素必须让编译器能将其从 Object 转换为 identifier 类型。

    expression 的计算结果为实现 IEnumerableIEnumerable 的类型,或定义 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

  测试

请参见

概念

面向 CLR 的语言功能