Jak: pro každou iteraci přes pole s
Toto téma ukazuje, jak použít pro každý v klíčové slovo na různých typech polí.
Příklad
Tento příklad ukazuje použití for each na pole typu odkaz.Všimněte si, že všechny dimenze multi jednorozměrné pole nulová, for each smyčka iteraci není pole.
// for_each_arrays.cpp
// compile with: /clr
using namespace System;
ref struct MyClass {
void Test() { Console::WriteLine("in MyClass"); }
};
ref struct MyClass2 {
void Test() { Console::WriteLine("in MyClass2"); }
};
int main() {
array<MyClass ^> ^ MyArray = gcnew array<MyClass ^>(2);
int i = 0;
for each ( MyClass ^ c in MyArray ) {
Console::Write("{0} = ", i++);
c -> Test();
}
Console::WriteLine();
array< MyClass2 ^, 2 > ^ MyArray2 = gcnew array< MyClass2 ^, 2 >(2, 2);
i = 0;
for each ( MyClass2 ^ c in MyArray2 ) {
Console::Write("{0} = ", i++);
c -> Test();
}
array< MyClass2 ^, 2 > ^ MyArray3 = gcnew array< MyClass2 ^, 2 >(2, 0);
i = 0;
for each ( MyClass2 ^ c in MyArray3 ) {
Console::Write("{0} = ", i++);
c -> Test();
}
}
Tento příklad ukazuje pro každé iterace ArrayList, který implementuje IEnumerable.
// for_each_arrays_2.cpp
// compile with: /clr
using namespace System;
using namespace System::Collections;
int main() {
int retval = 0;
ArrayList ^ arr = gcnew ArrayList();
arr->Add(10);
arr->Add(20);
arr->Add(30);
for each ( int c in arr )
retval += c;
Console::WriteLine(retval);
}
Tento příklad ukazuje, jak iterovat přes pole polí.
// for_each_arrays_3.cpp
// compile with: /clr
using namespace System;
#define ARRAY_SIZE 2
int main() {
int i, j;
// Declares an array of managed arrays of Int32.
array< array< Int32 > ^ > ^ IntArray = gcnew array<array< Int32 > ^>(ARRAY_SIZE);
for (i = 0 ; i < ARRAY_SIZE ; i++) {
IntArray[i] = gcnew array< Int32 >(ARRAY_SIZE);
for ( int j = 0 ; j < ARRAY_SIZE ; j++ )
IntArray[i][j] = i + 10;
}
for (i = 0 ; i < ARRAY_SIZE ; i++)
for (int j = 0 ; j < ARRAY_SIZE ; j++)
Console::WriteLine("IntArray[{0}] = {1}", i, IntArray[i][j]);
Console::WriteLine();
for each (array<Int32> ^ xyz in IntArray)
for each ( int c in xyz )
Console::WriteLine(c);
}