我正在开发一个网络应用程序,并且遇到了以下情况。
Dim a as Object
Dim i as Integer = 0
Try
For i=1 to 5
a = new Object()
'Do stuff '
a = Nothing
Next
Catch
Finally
a = Nothing
End Try
我需要在循环中执行 a=Nothing 还是垃圾收集器会清理 a ?
在 .NET 中,您通常不会need设置变量引用 =Nothing
(null
在 C# 中)。垃圾收集器最终会清理干净。当引用超出范围时(当你的方法退出时或当此类的对象完成时),引用本身将被销毁。请注意,这并不意味着object被破坏了,只是对它的引用。该对象仍将被收集器不确定地销毁。
但是,设置您的参考=Nothing
将为 .NET 提供一个提示,表明该对象可能是垃圾,并且除了代码混乱之外不一定会造成任何损害。如果您要将其保留在那里,我建议将其从Try
堵塞;它已经在Finally
块,因此将始终被调用。 (除了某些灾难性的例外;但在这些情况下,它不会在Try
要么阻止!)
最后,我不得不承认我同意 Greg 的观点:如果没有这个,你的代码会更干净。向运行时提示您已完成引用是很好的,但当然并不重要。老实说,如果我在代码审查中看到这一点,我可能会让开发人员这样重写它:
Dim a as Object
Dim i as Integer = 0
For i=1 to 5
a = new Object()
'Do stuff
Next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)