对于每个,
使用 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 运行时
(没有此语言功能的窗口运行时特定备注。)
要求
编译器选项:/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);
}
Output
公共语言运行时
下表列出了特定于 C++/CLI 在 所有运行时 部分显示的语法的差异。
参数
表达式
托管数组表达式或集合。编译器必须能够转换从 Object 的集合元素转换为 标识符 类型。表达式 计算为实现 IEnumerable、IEnumerable<T>或一个类型定义了一个 GetEnumerator 方法的类型。在后一种情况下,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);
}
Output