如果我得到
Dim myRect As Rectangle = New Rectangle(0,0,100,100)
以后这样做是否有必要或很好:
myRect = Nothing
还是没有必要?谢谢你。
如果 是必要的,是否还有其他情况不适用于我的变量?
最佳答案
一般来说,作为 Joel said ,这是不必要的。
但是,在您的具体示例中,它实际上是 毫无意义的 。 Rectangle
是一种值类型,因此将其设置为 Nothing
甚至不会影响对象的引用计数;它正在为您的 Rectangle
变量分配一个新值( myRect
的默认值)。这类似于拥有一个 Integer
变量并在方法结束时将其设置为 0
。什么都不给你买。
我应该指出,“将任何变量设置为 Nothing
[或 C# 中的 null
] 永远不会完成任何事情”* 的说法是一个神话。如果不再需要引用的对象但您仍然拥有对类实例本身的引用,则您完全有可能在类中有一个字段,您也可以将其设置为 null
。
作为一个简单的例子,假设您有一些包装 T[]
数组的容器类,并且您为该容器提供了一个 Empty
方法。在此方法中将容器的内部数组设置为 null
可能是有意义的,这将导致对数组对象的零引用,使其有资格进行垃圾回收。 (然后,当外部代码接下来尝试向集合添加 ojit_code 时,您将创建一个新数组。)如果您没有在 T
上将该字段设置为 null,那么仍然会有对该数组(即该字段)的引用,因此这将是您真正不需要的少量内存被使用。
就像我说的,这是一个简单的例子。老实说,您很少需要考虑这样的场景。我只是想我会提到它,这样您就不会产生错误的印象,即将字段设置为 Empty
实际上永远不会完成任何事情。
*我实际上并没有在这里引用任何特定的人;这只是我不止一次听到的一种过度概括。
关于vb.net - 将变量设置为 "Nothing"是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820952/