我经常在编程中使用交错数组。通常,它们的大小是静态的,但我会用新数据重新填充它们。在过去,我只是使用'new‘运算符来清除数组,然后重新初始化它。然而,我怀疑这可能不是最佳实践。
对于清除锯齿数组并将其所有值清零的最佳方法,有什么建议吗?
我对Array.Clear很熟悉,但据我所知,因为交错数组在技术上不是连续的,所以我相信我必须分别循环并清除每个子元素?提前感谢!Jaspar
发布于 2018-04-12 22:05:26
我会使用Array.Clear()
int[][] jagged = new int[][] {
new int[] { 1, 2, 3, 4 },
new int[] { 11, 12 },
new int[] { 21, 22, 23 }
};
for (int i = 0; i < jagged.Length; i++)
{
Array.Clear(jagged[i], 0, jagged[i].Length);
}而不是
for (int i = 0; i < jagged.Length; i++)
{
for (int j = 0; j < jagged[i].Length; j++)
{
jagged[i][j] = 0;
}
}发布于 2018-04-12 22:17:24
是的,我相信你将不得不在子数组上循环。
交错数组是数组的数组。default( refenence type )为空引用。因此,一个清晰的锯齿数组将是一个空引用的数组。
但您希望清除这些数组的每个成员,因此:
foreach (int[] subArray in jaggedArr)
{
Array.Clear (subArray, 0, subArray.Length);
}发布于 2018-04-12 22:13:50
通过赋值null来使数组为垃圾收集做好准备,删除所有现有的引用就足够了。(array=null)
则可以通过调用(array.Collect())来强制垃圾收集,
https://stackoverflow.com/questions/49798644
复制相似问题