【发布时间】:2010-12-20 21:47:54
【问题描述】:
我有一个整数数组。它们从 0 开始,然后填充一些值。然后我想将所有值设置回 0 以便我可以再次使用它,或者只是删除整个数组以便我可以重新声明它并从一个全为 0 的数组开始。
【问题讨论】:
我有一个整数数组。它们从 0 开始,然后填充一些值。然后我想将所有值设置回 0 以便我可以再次使用它,或者只是删除整个数组以便我可以重新声明它并从一个全为 0 的数组开始。
【问题讨论】:
您可以拨打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 - 这不是我需要的东西。
(当然,如果你要替换所有值,你可以在不先清除数组的情况下这样做。)
【讨论】:
IList 接口,该接口具有Clear 方法。说((IList)x).Clear(); 也会“清除”数组实例,尽管这不是很好documented。如果数组实际上是一维和零索引的,它还“神奇地”实现了通用的IList<> 接口,该接口具有 另一个 方法,也称为Clear。如果你说((IList<int>)x).Clear();,你会得到一个运行时异常! Array 中的这两个显式接口实现的行为不同,这是一个微妙之处。