Procedura: Eseguire una reiterazione sulle matrici con per ognuno
In questo argomento viene illustrato come utilizzare la parola chiave di per ognuno, in sui diversi tipi di matrici.
Esempio
In questo esempio viene illustrato come utilizzare for each su matrice di tipi di riferimento.Si noti che se qualsiasi dimensione di a più matrice a è zero, il ciclo di for each non ripetuto nella matrice.
// 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();
}
}
In questo esempio per ognuno che scorre ArrayList, che implementi 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);
}
In questo esempio viene illustrato come scorrere una matrice di matrici.
// 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);
}