Dim myRect As Rectangle = New Rectangle(0,0,100,100)
是否有必要或只是罰款以後做到這一點:
myRect = Nothing
還是沒有必要?謝謝。
IF這是必要的,有沒有其他情況下,它不是我的變量?
Dim myRect As Rectangle = New Rectangle(0,0,100,100)
是否有必要或只是罰款以後做到這一點:
myRect = Nothing
還是沒有必要?謝謝。
IF這是必要的,有沒有其他情況下,它不是我的變量?
一般來說,因爲Joel said,這是不必要的。
在你的具體例子中,它實際上是毫無意義的。 Rectangle
是值類型,所以將其設置爲Nothing
不是,即使是也會影響對象的引用計數;它會爲您的myRect
變量分配一個新的值(默認值爲Rectangle
)。這與變量Integer
相似,並在方法結束時將其設置爲0
。不買你任何東西。
我要指出的是,要求「[C#或null
]任何變量設置爲Nothing
一事無成」 *是一個神話。如果不再需要引用的對象,但您仍然有對類實例本身的引用,那麼您可能在類中有字段是完全可能的,您也可以將它設置爲null
。
作爲一個簡單的例子,假設你有一些容器類包裝T[]
數組,並且你給這個容器一個Empty
方法。在此方法中將容器的內部數組設置爲null
可能是有意義的,這會導致對數組對象的引用爲零,並將其限定爲垃圾回收。 (然後,當外部代碼接下來試圖向集合中添加一個T
時,您將創建一個新數組。)如果您沒有在Empty
上將該字段設置爲null,那麼仍然會引用該數組(即字段) ,所以這將是你真正不需要使用的少量內存。
就像我說的那樣,這是一個簡單的例子。說實話,你很少需要考慮這種情況。我只是想我會提到它,以便您不會產生錯誤的印象,即設置字段到Nothing
從字面上不會完成任何操作。
*我實際上並沒有在此引用任何人;這只是我聽過不止一次聲明的過度泛化。
不要這樣做。這在vb6時代很重要,但對於.Net,它可能(儘管不太可能)實際上拋棄垃圾收集器併產生其他意想不到的副作用。
用以下語句: 但是。淨它可能(儘管非常不可能)它實際上扔垃圾收集器,並有其他意想不到的副作用。 你實際上質疑.net的基礎。我非常懷疑這是事實。 – Califf 2014-04-03 15:26:36
如果它是一個圖像類型變量呢? – Voldemort 2011-01-27 19:44:44