猿问

C#零输出锯齿状数组

我在编程中经常使用锯齿状的数组。通常,它们的大小是静态的,但是我将用新数据重新填充它们。过去,我只是利用'new'运算符擦除了数组,然后重新初始化它。但是,我怀疑这可能不是最佳实践。
对清除锯齿状数组并将其所有值归零的最佳方法有何建议?

我对Array.Clear很熟悉,但是据我所知,因为锯齿状数组在技术上不是连续的,所以我相信我必须逐个循环并清除每个子级吗?提前致谢!贾斯帕


神不在的星期二
浏览 203回答 3
3回答

UYOU

我会用 Array.Clear()int[][] jagged = new int[][] {&nbsp; &nbsp; new int[] { 1, 2, 3, 4 },&nbsp; &nbsp; new int[] { 11, 12 },&nbsp; &nbsp; new int[] { 21, 22, 23 }};for (int i = 0; i < jagged.Length; i++){&nbsp; &nbsp; Array.Clear(jagged[i], 0, jagged[i].Length);}代替for (int i = 0; i < jagged.Length; i++){&nbsp; &nbsp; for (int j = 0; j < jagged[i].Length; j++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; jagged[i][j] = 0;&nbsp; &nbsp; }}

沧海一幻觉

是的,我相信您将不得不在子阵列上循环。锯齿状数组是数组的数组。该default( refenence type )为空引用。因此,一个清晰的锯齿状数组将是一个空引用数组。但是,您希望清除这些数组的每个成员,因此:foreach (int[] subArray in jaggedArr){&nbsp; &nbsp; Array.Clear (subArray, 0, subArray.Length);}

30秒到达战场

通过将null分配为使数组准备好进行垃圾回收,从而删除所有现有引用就足够了。&nbsp;(array=null)然后可以通过调用强制垃圾回收(array.Collect()),
随时随地看视频慕课网APP
我要回答