for each
, in
Prochází skrze pole nebo kolekci. Toto nestandardní klíčové slovo je k dispozici v projektech C++/CLI i nativních C++. Místo toho se ale upřednostňuje použití standardního příkazu založeného na rozsahu (C++).
Všechny moduly runtime
Syntaxe
for each (
type
identifier
in
expression
) {
statements
}
Parametry
type
Typ .identifier
identifier
Iterační proměnná, která představuje prvek kolekce. Pokud identifier
je sledovací referenční operátor, můžete upravit prvek.
expression
Výraz pole nebo kolekce. Element kolekce musí být takový, aby kompilátor jej mohl převést na identifier
typ.
statements
Jeden nebo více příkazů ke spuštění.
Poznámky
Příkaz for each
se používá k iteraci kolekcí. Prvky v kolekci můžete upravovat, ale nemůžete přidávat ani odstraňovat prvky.
Spouští statements
se pro každý prvek v matici nebo kolekci. Po dokončení iterace pro všechny prvky v kolekci se ovládací prvek přenese do příkazu, který následuje za blokem for each
.
for each
a in
jsou kontextově citlivá klíčová slova.
prostředí Windows Runtime
Požadavky
Možnost kompilátoru: /ZW
Příklad
Tento příklad ukazuje, jak iterovat for each
řetězcem.
// 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 (Common Language Runtime)
Poznámky
Syntaxe CLR je stejná jako syntaxe Všechny moduly runtime, s výjimkou následujícího.
expression
Výraz spravovaného pole nebo kolekce. Element kolekce musí být takový, aby kompilátor jej mohl převést z Object typu identifier
.
expression
vyhodnotí na typ, který implementuje , nebo typ, který definuje metoduGetEnumerator
, která buď vrátí typ, který implementuje IEnumerator nebo deklaruje všechny metody, které jsou definovány v IEnumerator
. IEnumerable<T>IEnumerable
Požadavky
Možnost kompilátoru: /clr
Příklad
Tento příklad ukazuje, jak iterovat for each
řetězcem.
// 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
Viz také
Přípony komponent pro platformy běhového prostředí
Příkaz založený na rozsahu (C++)