Итерация многомерного массива с вложенным оператором Foreach - PullRequest
63 голосов
/ 24 мая 2010

Я думаю, что это может быть довольно простой вопрос, но я пока не смог разобраться. Если у меня есть двумерный массив, например, так:

int[,] array = new int[2,3] { {1, 2, 3}, {4, 5, 6} };

Какой лучший способ перебрать каждое измерение массива с помощью вложенного оператора foreach ?

Ответы [ 11 ]

0 голосов
/ 23 мая 2011

Вы также можете использовать счетчики. Каждый тип массива любого измерения поддерживает метод Array.GetEnumerator. Единственное предостережение в том, что вам придется иметь дело с боксом / распаковкой. Однако код, который вам нужно написать, будет довольно тривиальным.

Вот пример кода:

class Program
{
    static void Main(string[] args)
    {
        int[,] myArray = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
        var e = myArray.GetEnumerator();

        e.Reset();

        while (e.MoveNext())
        {
            // this will output each number from 1 to 6. 
            Console.WriteLine(e.Current.ToString());
        }

        Console.ReadLine();
    }
}
...