Как Выполняет перебор для каждого с массивами
В этом разделе показано, как использовать ключевое слово для каждого внутри в различных типах массивов.
Пример
В этом образце показано, как использовать for each в массиве ссылочных типов. Обратите внимание, что если любое измерение multi габаритного массива равен нулю, цикл for each не повторит с массивом.
// 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();
}
}
Этот пример выводит для каждого циклическое по ArrayList, который реализует 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);
}
В этом примере показано, как выполнить с массивом массивов.
// 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);
}