1

我有一个带有字符串的哈希表。处理它们的最佳方法是什么?使用哈希表后,我应该调用 clear 然后将对象设置为 null 吗?或者只是将哈希表对象设置为 null 就足够了?

4

3 回答 3

1

其他人建议什么都不做,这大部分是真的。在经典的 C# 术语中,您无法处理它,并且将其设置为 null 也应该证明是不必要的。如果您允许,垃圾收集器将完成其工作。

所以让它吧。

我必须提供的一条建议将帮助您让垃圾收集器完成其工作,即将对象的生命周期限制为不超过您需要的时间。如果对象只需要为方法调用而存在,则将变量的范围和底层对象的生命周期限制为该方法,不要将其提升到可能存在更长时间的类成员。如果该类在任意长的时间内存在,则该会员国将与它一起生活。

声明变量并在您需要它的地方实例化对象,并且只在您需要它的地方实例化,并相信垃圾收集器会在您完成后的某个时候回收该内存。

于 2013-02-20T05:19:01.447 回答
1

将变量设置为 null 并不能保证它会被垃圾回收。如果其他变量引用同一对象,则在引用计数变为零之前不会收集相关对象。

限制对象的范围会有所帮助,因为在对象超出范围后更有可能收集该对象。对于文件句柄等垃圾收集未处理的项目,实现 idisposable 确实更有意义。

于 2013-02-20T06:02:09.153 回答
0

HashTable没有实现IDisposable所以你不能调用Dispose它,你可以分配对象null让垃圾收集器处理它。您无法预测垃圾收集器何时收集它,尽管您可以强制垃圾收集器GC.Collect但不推荐。

您可能会看到:垃圾收集的基础知识

除此之外,您可以查看Dictionary<TKey, TValue> Class哪个是HashTable.

于 2013-02-20T05:05:28.017 回答