如果我有一个函数,并且在其中我有一个字符串列表,如下所示:
List<string> mylist = new List<string>();
.我做了一些事情,然后在返回我所做的函数之前:
mylist.Clear();
真的需要清楚吗?或者GC会为我处理事情?
我正在使用 C#,。Net4.5,Windows。
不,您不需要清除它。 仅当您要使用现有列表并清除元素以便可以再次将其与新元素一起使用时,才会这样做。 一旦你的变量超出范围,它将被GC'd。
如果你的列表由对象(引用类型实例(组成,那么如果你有指向它们的单独变量,这些引用可能会保留,但当然,一旦它们超出范围,这些引用也会被GCd。 不过,这与列表无关。
No.你不应该那样做。
清除列表将清除存储实际值的后备数组。它将内存返回到操作系统。所有这些都已经由垃圾收集器完成(并且可能更有效(。您只是为您和 GC 创造了额外的工作。