在C#中将2D数组清零的最快方法

PBr*_*nek 14 .net c# arrays performance multidimensional-array

我有一个2D数组,我想清除并重置为0值.我知道如何清除矢量(1D阵列),Array.Clear()但我不知道清除2D矩阵的最佳方法.

double D = new double[10];  
Array.Clear(D, 0, D.Length);
Run Code Online (Sandbox Code Playgroud)

如何清除2D N x M阵列

double D[,] = new double[N,M];
Run Code Online (Sandbox Code Playgroud)

感谢您提供的任何帮助.

p.s*_*w.g 32

Array.Clear 也适用于多维数组:

double[,] D = new double[M,N];
Array.Clear(D, 0, D.Length);
Run Code Online (Sandbox Code Playgroud)

注意,不需要自己计算长度,因为该Length属性返回元素的总数,而不管维数是多少:

一个32位整数,表示数组所有维度中的元素总数; 如果数组中没有元素,则返回零.

  • @MikeStrobel我从来没有考虑过这样使用它,因为对我来说`IList.Clear`意味着'删除所有元素',而不是'将所有元素设置为默认',但是似乎工作得很好. (3认同)
  • `((IList)D).清除()`相当于`Array.Clear(D,0,D.Length)`和_might_更好,如果只是因为使用`Length`来清除矩形数组起初看起来很奇怪一目了然. (2认同)