2011-01-27 83 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

相關問題