我应该创建一个新数组还是使用array.clear?

时间:2015-03-20 20:16:32

标签: c# arrays

我有一系列数据会不时被清零。为此,我应该实例化一个新数组,还是使用Array.Clear方法?

例如,

int workingSet = new int[5000];

// Other code here

workingSet = new int[5000];
// or
Array.Clear(workingSet, 0, 5000);

3 个答案:

答案 0 :(得分:8)

当您创建一个新数组而不是旧数组时,C#将:

  1. 使旧数组符合垃圾回收条件,并最终解除分配
  2. 分配新阵列
  3. 用零填充新数组。
  4. 当你保留一个旧数组时,C#将

    1. 用零填充旧数组。
    2. 其他条件相同,第二种方法更有效。

答案 1 :(得分:2)

如果在许多地方引用了数组,则使用Clear()会更安全,因为它可以保证同一数组的所有实例继续引用相同的数组。

答案 2 :(得分:1)

当你拥有一个大型数组时,数组清除通常具有更好的性能....我的意思是成千上万的元素。否则对于小阵列只需使用new。如果您在代码中的其他位置使用此数组,例如在线程之间,你应该使用clear来确保每个线程都可以使用归零/默认数组

您可以使用一些秒表机制或分析工具轻松自行检查