Самый быстрый способ обнулить 2D массив в C#


У меня есть двумерный массив, который я хочу очистить и сбросить до 0 значений. Я знаю, как очистить вектор (1D массив) с помощью Array.Clear(), но я не знаю лучшего способа очистить 2D матрицу.

double D = new double[10];  
Array.Clear(D, 0, D.Length);

Как очистить 2D N x m массив

double D[,] = new double[N,M];
Благодарю вас за любую помощь, которую вы можете оказать.
3 12

3 ответа:

Array.Clear работает и с многомерными массивами:

double[,] D = new double[M,N];
Array.Clear(D, 0, D.Length);

Обратите внимание, что нет необходимости вычислять длину самостоятельно, так как Length свойство возвращает общее количество элементов, независимо от количества измерений:

32-разрядное целое число, представляющее общее число элементов во всех измерениях массива; ноль, если в массиве нет элементов.

Просто перераспределите его.

double D[,] = new double[N,M];

Создает пустой двумерный массив.

Вы можете использовать тот же метод, но вам может потребоваться вычислить реальное значение параметра length:

double D[,] = new double[N,M];
Array.Clear(D, 0, M*N);

Я бы использовал M*N, потому что это более читабельно, и я не знаю, что возвращает свойство Length для 2-dimmentional array.