2011-01-27 76 views

回答

7

一般来说,因为Joel said,这是不必要的。

在你的具体例子中,它实际上是毫无意义的Rectangle值类型,所以将其设置为Nothing不是,即使是也会影响对象的引用计数;它会为您的myRect变量分配一个新的(默认值为Rectangle)。这与变量Integer相似,并在方法结束时将其设置为0。不买你任何东西。


我要指出的是,要求“[C#或null]任何变量设置为Nothing一事无成” *是一个神话。如果不再需要引用的对象,但您仍然有对类实例本身的引用,那么您可能在类中有字段是完全可能的,您也可以将它设置为null

作为一个简单的例子,假设你有一些容器类包装T[]数组,并且你给这个容器一个Empty方法。在此方法中将容器的内部数组设置为null可能是有意义的,这会导致对数组对象的引用为零,并将其限定为垃圾回收。 (然后,当外部代码接下来试图向集合中添加一个T时,您将创建一个新数组。)如果您没有在Empty上将该字段设置为null,那么仍然会引用该数组(即字段) ,所以这将是你真正不需要使用的少量内存。

就像我说的那样,这是一个简单的例子。说实话,你很少需要考虑这种情况。我只是想我会提到它,以便您不会产生错误的印象,即设置字段Nothing从字面上不会完成任何操作。

*我实际上并没有在此引用任何人;这只是我听过不止一次声明的过度泛化。

+0

如果它是一个图像类型变量呢? – Voldemort 2011-01-27 19:44:44

5

不要这样做。这在vb6时代很重要,但对于.Net,它可能(尽管不太可能)实际上抛弃垃圾收集器并产生其他意想不到的副作用。

+3

用以下语句: 但是。净它可能(尽管非常不可能)它实际上扔垃圾收集器,并有其他意想不到的副作用。 你实际上质疑.net的基础。我非常怀疑这是事实。 – Califf 2014-04-03 15:26:36

相关问题