Я думаю, что zcleghern означает что-то вроде `` `public static void ForEach <T> (этот источник Array, Action <T> action) {if (source.Rank == 0) {foreach (var item in source) {action ((T ) предмет); }} else {foreach (Array arr in source) {arr.ForEach (action); }}} `` `

у создать метод расширения для зацикливанияSystem.Array с неизвестным количеством измерений

Сейчас я использую наивный подход:

public static void ForEach<T>(this Array source, Action<T> action)
{
    if(source.Rank == 1)
    {
        for (int w = 0; w < source.GetLength(0); w++)
        {
            action((T)source.GetValue(w));
        }
    }
    else if(source.Rank == 2)
    {
        for (int h = 0; h < source.GetLength(1); h++)
        {
            for (int w = 0; w < source.GetLength(0); w++)
            {
                action((T)source.GetValue(h, w));
            }
        }
    }
    else if(source.Rank == 3)
    {
        // etc
    }
}

Я уверен, что есть гораздо более элегантный способ сделать это. Но я не могу понять это. Как мне обобщить этот метод для неограниченного числа измерений?

Ответы на вопрос(3)

Ваш ответ на вопрос