pro každý v
Pro iterování polem nebo kolekcí použijte příkaz for each.
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.Jestliže je identifier sledovaným odkazem, lze tento prvek upravit.expression
Výraz pole nebo kolekce.Kompilátor musí být schopen převést prvek kolekce na typ identifier.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 je možné měnit, ale nelze je přidávat ani odstraňovat.
Příkazy jsou spouštěny pro každý prvek pole nebo kolekce.Po dokončení iterace u všech prvků v kolekci je kontrola předána dalšímu příkazu následujícímu po bloku for each.
Klíčová slova for each a in jsou kontextově citlivá, další informace naleznete v tématu Kontextově závislá klíčová slova (rozšíření komponent C++).
Ve vývojovém prostředí lze získat nápovědu zvýrazněním klíčového slova (for each) a stisknutím klávesy F1.
Další informace naleznete v tématu:
Windows Runtime
(Pro modul Windows Runtime neexistují žádné specifické poznámky pro tuto funkci jazyka).
Požadavky
Možnost kompilátoru: /ZW
Příklady
Příklad
Tento příklad ukazuje, jak iterovat řetězec pomocí 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);
}
Výsledek
Common Language Runtime
Následující tabulka vypisuje odlišnosti od syntaxe uvedené v oddíle Všechny moduly runtime specifické pro jazyk C++/CLI.
Parametry
výraz
Výraz spravovaného pole nebo kolekce.Kompilátor musí být schopen převést prvek kolekce z typu Object na typ identifikátoru.výraz je vyhodnocen jako typ, který implementuje IEnumerable, IEnumerable<T>, nebo typ, který definuje metoda GetEnumerator.V takovém případě by metoda GetEnumerator měla vrátit typ, který implementuje IEnumerator nebo deklaruje všechny metody, které jsou v IEnumerator definovány.
Požadavky
Možnost kompilátoru: /clr
Příklady
Příklad
Tento příklad ukazuje, jak iterovat řetězec pomocí 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);
}
Výsledek