【C#】靜態變數和方法該如何使用?
阿新 • • 發佈:2018-12-09
什麼是靜態變數?
簡單的來說就是:用static修飾的變數,它屬於它所在的類所有,而不是具體的某一個物件。
靜態變數也被稱為全域性變數,就是它在程式執行的時候就被初始化,如果你在它初始化或使用的時候,沒有給它賦值,系統就會給它一個預設值。
靜態方法同理,簡單瞭解一下它的使用規則:
1.靜態方法只能訪問類的靜態成員,不能訪問類的非靜態成員。
2.非靜態方法既可以訪問類的靜態成員,也可以訪問類的非靜態成員。
最近在專案中,經常會遇到跨窗體傳值的情況。
我們在跨窗體(類)傳值的時候,一般會有三種方法:
1.建構函式傳值
2.委託事件傳值
3.靜態變數傳值
前兩個方法比較適合於單個窗體呼叫單個窗體的值,但是如果這個資料是很多窗體需要共用的時候,這個時候,我們就需要使用靜態變數來幫助我們了。(這個時候,還有一個原因是,我們在窗體A獲取的數值,跳轉到下一個窗體的時候,可能窗體A已經關閉,此時非靜態變數也就會隨物件的消而消失。)
現在做專案,不僅要考慮到實現,還要考慮如何提高效能,我們就談一下static的優點和缺點:
優點:
1.在載入的時候,它也就裝入記憶體了
2.不需要例項物件,直接通過類就可以直接呼叫它
缺點:
系統的垃圾回收機制是無法回收靜態變數的,靜態變數會常駐記憶體中。
上邊說了那麼多,什麼時候才使用它呢?
簡單說一下我的理解,如有不足,歡迎補充:
1.靜態變數全域性唯一:就像一個標誌性(flag)的變數
2.牽一髮而動全身:它一改變,所有對它使用的類都需要改變
3.靜態方法多類呼叫(可以減少對委託的使用)
小編能力一般,水平有限,只能給大家分享這麼多,有什麼不足,歡迎大家指出!