C#靜態(tài)方法使用經(jīng)驗(yàn)淺談
C#靜態(tài)方法有什么弊端? 我們?cè)趯?shí)際的開(kāi)發(fā)過(guò)程中會(huì)注意到C#靜態(tài)方法對(duì)于我們程序的影響,那么有哪些C#靜態(tài)方法使用的體會(huì)呢?這里我們來(lái)看看一些方面:
C#靜態(tài)方法使用中遇到的問(wèn)題:
在源碼工程中幾乎沒(méi)有看到什么靜態(tài)方法,但是在Ms的SQLHelper中幾乎全部使用的是靜態(tài)方法,為什么會(huì)這樣呢?我們來(lái)看看有以下的幾種可能:
1、在一些系統(tǒng)中使用非常頻繁的方法都使用靜態(tài)方法可以提高系統(tǒng)性能我是這么認(rèn)為的 :)
2、本身不可升級(jí), 重寫(xiě) 這要看一個(gè)軟件產(chǎn)品的目的是什么了.
3、為了方便,不用實(shí)例化,但這樣程序編譯運(yùn)行時(shí)就占用了系統(tǒng)資源
4、C#靜態(tài)方法及屬性在程序啟動(dòng)的時(shí)候,就全部裝入內(nèi)存的,而不管這些方法、屬性以后有沒(méi)有用到。即使是沒(méi)有人再訪問(wèn)程序,這部分內(nèi)存仍然不會(huì)釋放還有就是,所有訪問(wèn)者看到的靜態(tài)屬性的數(shù)據(jù)幾乎都是一樣的,比如A用戶設(shè)置了UserName這個(gè)屬性,B用戶訪問(wèn)的時(shí)候,得到的UserName仍然是A用戶設(shè)置的那個(gè)。這種特性,如果用在固定數(shù)據(jù)中,那不會(huì)有太大問(wèn)題,比如連接字符串之類的
5、C#靜態(tài)方法/數(shù)據(jù)成員是屬于類的,不是屬于某一個(gè)對(duì)象的,因而調(diào)用它不需要實(shí)例化;靜態(tài)方法和靜態(tài)數(shù)據(jù)成員相當(dāng)于共享變量。為該類的所有對(duì)象所共有,因而在需要共享數(shù)據(jù)時(shí),定義這種類型時(shí)很好的選擇。 一但定義一個(gè)類后(不一定要實(shí)例化對(duì)象)該類的所有靜態(tài)成員就載入內(nèi)存(并不是程序啟動(dòng),就裝入內(nèi)存,沒(méi)有定義該類時(shí)它不會(huì)載入內(nèi)存) 靜態(tài)成員的作用域與它所屬的類的作用域相同
C#靜態(tài)方法的使用情況的一些相關(guān)內(nèi)容就向你介紹到這里,希望對(duì)你學(xué)習(xí)和使用C#靜態(tài)方法有所幫助。
【編輯推薦】