(c#疑問)static的優點是什么?為什么要使用static 變量或函數??


有一些頻繁使用的東西,如果你每次使用都重新new一下,那么這個開銷可能會很高,如果使用static,一直放在內存中,那么想用就直接用,而不需要重新new一塊空間初始化數據。那么static就是為了實現一個系統的緩存作用的,其生命周期直到應用程序退出結束。

 

靜態成員包括靜態字段和靜態屬性,靜態成員和類相關聯,不依賴於對象而存在,只能由類訪問,而不能由對象訪問;
靜態成員屬於類所有,無認創建多少實例對象,靜態成員在內存中只有一份;實例成員屬於類的實例所有,每創建一個實例對象,實例成員都會在內存中分配一塊內存區域。
所以靜態成員一般用於存放共享的數據段,如數據庫連接字符串等。

一個類如果只包含靜態成員和靜態方法,則該類可以定義為靜態類,給類加上static修飾符;
靜態方法和非靜態方法:
一、性能上:靜態方法和實例方法差別不大。所有方法,不管是靜態方法還是實例方法,都是在JIT加載類時分配內存,不同的是靜態方法以類名引用,而實例方法對對象實例引用。創建實例時,不會再為類的方法分配內存,所有的實例對象共用一個類的方法代碼。因此靜態方法和實例方法的調用,在性能上的差別微乎其微。
二、靜態方法只能由類訪問;實例方法只能由對象訪問。

 

優點:
1,靜態變量在類載入時,就裝入內存
2,使用時不用 New 就意味的不必 創建類中 所有對象,就可以調用 某個方法
缺點:
1,垃圾回收機制 不能 回收 靜態變量,靜態類變量 會常駐內存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM