【发布时间】:2016-12-22 12:02:32
【问题描述】:
**** 编辑 *****
有个问题-here,我已经解决了。我的提问目的不同(在那个问题中,提问者正在寻求他得到的解决方案。在这里我正在寻找更好的方法来完成任务(我知道两种解决方案,并要求更好的一个甚至更好的第三个)选项))
我有一个 Obj 数组。
我知道这两种清除(或类似)数组的方法。
int length = arrayOfObj.Length
1:
arrayOfObj = new Obj[length]
2:
Array.Clear(arrayOfObj, 0, length)
他们显然都在做同样的事情。 但是就内存而言,其中哪一个更好。 还是我应该离开内部垃圾收集的事情?
【问题讨论】:
-
把它留给 GC,只要它们不实现
IDisposable在这种情况下你应该处理每个元素。 -
另外,如果实现了
IDisposable,则使用using块来管理处置。 -
@HimBromBeere 所以如果我让
Obj实现IDisposable我可以做哪些优化?我应该遍历数组并处理每个对象吗?和出于好奇(与这个问题无关),处置对象更好或使用using (Obj) {}? -
当您的实例实现
IDisposable时,您必须以任何方式调用Dispoase,否则会产生内存泄漏。但我建议使用using (var instance = new ...),即使出现异常,它也会自动调用Dispose。
标签: c# arrays memory-management