为了账号安全,请及时绑定邮箱和手机立即绑定

C#零输出锯齿状数组

C#零输出锯齿状数组

C#
神不在的星期二 2021-04-09 17:19:50
我在编程中经常使用锯齿状的数组。通常,它们的大小是静态的,但是我将用新数据重新填充它们。过去,我只是利用'new'运算符擦除了数组,然后重新初始化它。但是,我怀疑这可能不是最佳实践。对清除锯齿状数组并将其所有值归零的最佳方法有何建议?我对Array.Clear很熟悉,但是据我所知,因为锯齿状数组在技术上不是连续的,所以我相信我必须逐个循环并清除每个子级吗?提前致谢!贾斯帕
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

我会用 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;

    }

}


查看完整回答
反对 回复 2021-04-17
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

是的,我相信您将不得不在子阵列上循环。


锯齿状数组是数组的数组。该default( refenence type )为空引用。因此,一个清晰的锯齿状数组将是一个空引用数组。


但是,您希望清除这些数组的每个成员,因此:


foreach (int[] subArray in jaggedArr)

{

    Array.Clear (subArray, 0, subArray.Length);

}


查看完整回答
反对 回复 2021-04-17
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

通过将null分配为使数组准备好进行垃圾回收,从而删除所有现有引用就足够了。 (array=null)

然后可以通过调用强制垃圾回收(array.Collect())


查看完整回答
反对 回复 2021-04-17
  • 3 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信