如果我得到
Dim myRect As Rectangle = New Rectangle(0,0,100,100)
以后这样做是必要的还是很好:
myRect = Nothing
还是没有必要?谢谢你。
如果有必要,是否还有其他情况不适用于我的变量?
一般来说,正如乔尔所说,这是不必要的。
但是,在您的具体示例中,它实际上是毫无意义的。Rectangle
是一个值类型,所以设置它甚至Nothing
不会影响对象的引用计数;它正在为您的变量分配一个新值( 的默认值)。这类似于拥有一个变量并将其设置在方法的末尾。不给你买任何东西。Rectangle
myRect
Integer
0
我应该指出,“将任何变量设置为Nothing
[或null
在 C# 中] 永远不会完成任何事情”* 是一个神话。如果不再需要引用的对象但您仍然拥有对类实例本身的引用,那么您完全有可能在类中有一个字段,您也可以将其设置为。null
举个简单的例子,假设你有一些容器类包装了一个T[]
数组,你给这个容器一个Empty
方法。在此方法中将容器的内部数组设置为可能是有意义的null
,这将导致对数组对象的引用为零,从而使其有资格进行垃圾回收。(然后,当外部代码接下来尝试将 a 添加到集合中时,您将创建一个新数组T
。)如果您没有将字段设置为 null on Empty
,那么仍然会有对数组(即字段)的引用,并且所以这将是您真正不需要的少量内存。
就像我说的,这是一个简单的例子。老实说,你很少需要考虑这样的场景。我只是想我会提到它,这样您就不会产生错误的印象,即将字段设置为Nothing
字面上永远不会完成任何事情。
*我实际上并没有在这里引用任何具体的人;这只是我不止一次听到的过度概括。
不要这样做。这在 vb6 时代很重要,但对于 .Net 来说,它有可能(尽管非常不可能)实际上将垃圾收集器扔掉并产生其他意想不到的副作用。