該不該將變數設為 null ?

2022-03-07 23:29:20 字數 825 閱讀 1929

對於引用型別的變數,在什麼時候需要將其顯式設為null,在什麼時候不需要呢?

對於區域性變數,在方法結束的時候,變數就會失效,變數指向的物件引用也會減少乙個,如果該變數是該物件唯一的引用,那麼該物件就會被gc**。這個時候完全沒必要顯式將變數設為null,因為這樣做只是相當於顯式宣告了變數作用域的終結。而且,這樣做可能會有兩個弊端:

可能會帶來bug。你在這裡將變數顯式設為null,如果後面有人還要用該變數確卻不知道該變數已被設為null就會帶來bug

可能阻止gc提前**該物件。在你最後一次使用該變數後,如果不在後面顯式將其設為null,那麼clr可能會提前檢測到該變數後面再無引用,從而提前**物件資源。如果你在後面顯式將其設為null,那麼clr會認為該變數後面還會被使用,從而不能**。

在兩種情形下,可能會將某變數顯式設為null

它是某個長生存期物件的成員,並且再也不會被該物件使用,而且比較大,在這種時候,將其設為null是一種優化。

它是某個長生存期物件的成員,並且再也不會被該物件使用,並且已經被dispose了以釋放其占用的資源。這裡將其設為null是一種安全的做法,因為確定某人誤用了乙個null物件比確定某人誤用了乙個已被dispose的物件更容易些。

到底該不該告發

昨天看到乙個新聞,乙個女孩因為父母離婚,把自己的父親告上法庭,包二奶。這個故事從人情世故來看,最大的猜測可能就是,王母的疑心比較重,王父感情走私,兩人離婚,在現代社會,是乙個很普通的感情糾葛,麻煩的就是王一時衝動,把自己的父親暴露在網路上。網路是乙個很可怕的 群體的無理智性在網路上發揮的淋漓盡致。王...

該不該抱怨生活?

真正受過挫折的人,從不會抱怨生活,他們在爭分奪秒的努力。無意中刷到這句話,感覺醍醐灌頂,遇到一點不如意的事就開始抱怨彷彿已經成了大多數人的習慣。看到這篇文章的小夥伴反思下大多數人有沒有你!最近舅爹住院,我每天下午在醫院陪舅爹,舅爹是11床,12床是一位奶奶,奶奶有一位專門陪護的爹爹,就是她老伴,奶奶...

2016該不該買房

2016年馬上要過去一半了,那些在2015年沒及時出手買到房子的購房者,只能寄希望於明年的樓市。那2016年各地樓盤會有哪些變化呢?房價走勢如何,是 還是下降呢?2016年什麼時機買房合適呢?1 當前房價基本正常,並不是大部分人買不起 實際上近20年來房價增長速度都在正常的增長速度上下變化,有些年份...