Como: iterar Arrays com para cada
Este tópico mostra como usar o para cada um, em palavra-chave em diferentes tipos de arrays.
Exemplo
Este exemplo mostra como usar o for each matriz de tipos de referência.Observe que, se qualquer dimensão de uma matriz dimensional multi é zero, o for each loop não irá iterar a matriz.
// 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();
}
}
Este exemplo mostra para cada iteração através de um ArrayList, que implementa 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);
}
Este exemplo mostra como iterar em uma matriz de matrizes.
// 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);
}