如何在Visual C#中清空一个数组

7

我有一个整数数组。它们最初为0,然后填充了一些值。然后我想将所有值都设置回0,以便可以再次使用它,否则只需删除整个数组,以便重新声明并从全0数组开始。


可能是 https://dev59.com/nnM_5IYBdhLWcg3wXx5N 的重复问题。 - Jørn Schou-Rode
1个回答

28
你可以调用 Array.Clear 方法:
int[] x = new int[10];
for (int i = 0; i < 10; i++)
{
    x[i] = 5;
}
Array.Clear(x, 0, x.Length);

根据情况,相反地,你可能会发现创建一个新的数组更加清晰。特别是,你就不需要担心其他代码是否仍然引用该数组并期望旧值还在那里了。

我无法回忆起自己在代码中曾经调用过 Array.Clear - 这不是我所需要的东西。

(当然,如果你打算先替换所有值,你可以在不清空数组的情况下完成这个操作。)


2
任何数组都实现了非泛型的 IList 接口,该接口具有 Clear 方法。说 ((IList)x).Clear(); 也会“清除”数组实例,尽管这并没有很好地记录。如果数组实际上是一维且从零开始索引,则它还“神奇地”实现了通用的 IList<> 接口,该接口还有另一个名为 Clear 的方法。如果你说 ((IList<int>)x).Clear();,你会得到一个运行时异常!这是一个微妙的问题,Array 中这两个显式接口实现的行为是不同的。 - Jeppe Stig Nielsen
感谢您对代码中涉及数组引用的评论!在执行s1 = s2;和Array.Clear(s2, 0, s2.Length)之后,我花了一些时间才意识到自己做了什么。谢谢! - Gyfis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接