题
如果我有
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
在此方法中,将导致对数组对象的零引用,将其限定为垃圾收集。 (然后,当外部代码下一步尝试添加一个时,您将创建一个新数组 T
到集合。)如果您没有将字段设置为null Empty
, ,然后仍然会引用数组(即字段),因此,这将是您真正不需要的少量内存。
就像我说的那样,这是一个简单的例子。老实说,很少需要考虑这样的场景。我只是以为我会提到它,这样您就不会得到错误的印象 场地 至 Nothing
从字面上看,从来没有完成任何事情。
*我实际上并不是在这里引用任何特定的人;这只是我听说过的过度概括。
其他提示
不要做。这在VB6天内很重要,但是对于.NET来说,(尽管不太可能)实际上将垃圾收集器丢弃并产生其他意外的副作用。
不隶属于 StackOverflow