我经常在编程中使用锯齿状数组。通常,它们的大小是静态的,但我会用新数据重新填充它们。在过去,我刚刚使用'new'运算符来清除数组,然后重新初始化它。但是,我怀疑这可能不是最好的做法 有关清除锯齿状阵列并将其所有值归零的最佳方法的建议吗?
我熟悉Array.Clear,但据我所知,由于Jagged数组在技术上并不连续,我相信我必须循环并清除每个孩子? 提前致谢! 贾斯珀
答案 0 :(得分:1)
我会使用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;
}
}
答案 1 :(得分:0)
通过分配null以使阵列为垃圾收集做好准备就足以删除所有现有引用。 type elem=
|Nil
|Elem of {content:int;mutable next:elem};;
然后可以通过调用(array=null)
,
答案 2 :(得分:0)
是的,我相信你必须在子阵列上循环。
锯齿状数组是一个数组数组。 default( refenence type )
是空引用。因此,清除锯齿状数组将是一个空引用数组。
但是你希望清除那些数组的每个成员:
foreach (int[] subArray in jaggedArr)
{
Array.Clear (subArray, 0, subArray.Length);
}