为了账号安全,请及时绑定邮箱和手机立即绑定

在.NET中使用后将对象设置为Null/Nothing

在.NET中使用后将对象设置为Null/Nothing

波斯汪 2019-07-13 10:48:35
在.NET中使用后将对象设置为Null/Nothing是否应该将所有对象设置为null (Nothing(在VB.NET中)一旦你完成了它们?我理解在.NET中,必须处理实现IDisposable接口来释放某些资源,尽管对象在被释放后仍然可以是一些东西(因此,isDisposed属性),所以我假设它仍然可以驻留在内存中,或者至少部分驻留在内存中?我还知道,当一个对象超出作用域时,它就会被标记为收集,为垃圾收集器的下一次传递做好准备(尽管这可能需要时间)。因此,考虑到这一点,我们将把它设置为null加快系统释放内存,因为它不需要计算出它不再在范围内,它们是否有任何坏的副作用?MSDN文章从未在示例中这样做,目前我这样做是因为我看不到它的危害。然而,我遇到了各种各样的意见,所以任何评论都是有用的。
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

卡尔是绝对正确的,没有必要在使用后将对象设置为空。如果对象实现IDisposable,确保你给我打电话IDisposable.Dispose()当您完成了该对象(包装在try..finally,或者,using()街区)。但即使你不记得给我打电话Dispose(),对象上的finaliser方法应该调用Dispose()为了你。

我认为这是一种很好的治疗:

挖掘IDisposable

而这个

理解IDisposable

尝试猜测GC及其管理策略没有任何意义,因为它是自调优和不透明的。关于与杰弗里·里希特(JeffreyRichter)在Dot Net Rocks上的内部工作,大家进行了很好的讨论关于Windows内存模型的JeffreyRichter里奇特的书CLR通过C#第20章有一个很好的处理方法:


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 717 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信