1. 程式人生 > >【C#】靜態變數和方法該如何使用?

【C#】靜態變數和方法該如何使用?

什麼是靜態變數?

簡單的來說就是:用static修飾的變數,它屬於它所在的類所有,而不是具體的某一個物件。

靜態變數也被稱為全域性變數,就是它在程式執行的時候就被初始化,如果你在它初始化或使用的時候,沒有給它賦值,系統就會給它一個預設值。

 

靜態方法同理,簡單瞭解一下它的使用規則:

1.靜態方法只能訪問類的靜態成員,不能訪問類的非靜態成員。

2.非靜態方法既可以訪問類的靜態成員,也可以訪問類的非靜態成員。

 

最近在專案中,經常會遇到跨窗體傳值的情況。

我們在跨窗體(類)傳值的時候,一般會有三種方法:

1.建構函式傳值

2.委託事件傳值

3.靜態變數傳值

前兩個方法比較適合於單個窗體呼叫單個窗體的值,但是如果這個資料是很多窗體需要共用的時候,這個時候,我們就需要使用靜態變數來幫助我們了。(這個時候,還有一個原因是,我們在窗體A獲取的數值,跳轉到下一個窗體的時候,可能窗體A已經關閉,此時非靜態變數也就會隨物件的消而消失。)

 

現在做專案,不僅要考慮到實現,還要考慮如何提高效能,我們就談一下static的優點和缺點:

優點:

1.在載入的時候,它也就裝入記憶體了

2.不需要例項物件,直接通過類就可以直接呼叫它

缺點:

系統的垃圾回收機制是無法回收靜態變數的,靜態變數會常駐記憶體中。

 

上邊說了那麼多,什麼時候才使用它呢?

簡單說一下我的理解,如有不足,歡迎補充:

1.靜態變數全域性唯一:就像一個標誌性(flag)的變數

2.牽一髮而動全身:它一改變,所有對它使用的類都需要改變

3.靜態方法多類呼叫(可以減少對委託的使用)

 

小編能力一般,水平有限,只能給大家分享這麼多,有什麼不足,歡迎大家指出!