首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#零输出锯齿数组

问C#零输出锯齿数组
EN

Stack Overflow用户
提问于 2018-04-12 22:02:15
回答 3查看 899关注 0票数 0

我经常在编程中使用交错数组。通常,它们的大小是静态的,但我会用新数据重新填充它们。在过去,我只是使用'new‘运算符来清除数组,然后重新初始化它。然而,我怀疑这可能不是最佳实践。

对于清除锯齿数组并将其所有值清零的最佳方法,有什么建议吗?

我对Array.Clear很熟悉,但据我所知,因为交错数组在技术上不是连续的,所以我相信我必须分别循环并清除每个子元素?提前感谢!Jaspar

EN

回答 3

Stack Overflow用户

发布于 2018-04-12 22:05:26

我会使用Array.Clear()

代码语言:javascript
复制
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);
}

而不是

代码语言:javascript
复制
for (int i = 0; i < jagged.Length; i++)
{
    for (int j = 0; j < jagged[i].Length; j++)
    {
        jagged[i][j] = 0;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-04-12 22:17:24

是的,我相信你将不得不在子数组上循环。

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

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

代码语言:javascript
复制
foreach (int[] subArray in jaggedArr)
{
    Array.Clear (subArray, 0, subArray.Length);
}
票数 1
EN

Stack Overflow用户

发布于 2018-04-12 22:13:50

通过赋值null来使数组为垃圾收集做好准备,删除所有现有的引用就足够了。(array=null)

则可以通过调用(array.Collect())来强制垃圾收集,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49798644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档