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