C#靜态方法與非靜态方法的差別不僅僅是概念上的,那麼他們有什麼具體的差別呢?讓我們通過本文向你做一下解析。
C#的類中可以包含兩種方法:C#靜态方法與非靜态方法。那麼他們的定義有什麼不同呢?他們在使用上會有什麼不同呢?
讓我們來看看最直覺的差别:使用了static 修飾符的方法為靜态方法,反之則是非靜态方法。
下面我們分四個方面來看看C#靜态方法與非靜态方法的差異:
C#靜态方法與非靜态方法比較一、
C#靜态成員:
①靜态成員屬于類所有,非靜态成員屬于類的執行個體所有。
②每建立一個類的執行個體,都會在記憶體中為非靜态成員新配置設定一塊存儲;
靜态成員屬于類所有,為各個類的執行個體所公用,無論類建立了多少執行個體,類的靜态成員在記憶體中隻占同一塊區域。
C#靜态方法與非靜态方法比較二、
C#靜态方法
1、C#靜态方法屬于類所有,類執行個體化前即可使用。
2、非靜态方法可以通路類中的任何成員,靜态方法隻能通路類中的靜态成員。
3、因為靜态方法在類執行個體化前就可以使用,而類中的非靜态變量必須在執行個體化之後才能配置設定記憶體,
這樣,C#靜态方法調用時無法判斷非靜态變量使用的記憶體位址。是以無法使用。而靜态變量的位址對類來說是固定的,故可以使用。
C#靜态方法與非靜态方法比較三、
C#靜态方法是一種特殊的成員方法 它不屬于類的某一個具體的執行個體,而是屬于類本身。是以對靜态方法不需要首先建立一個類的執行個體,而是采用類名.靜态方法的格式 。
1.static方法是類中的一個成員方法,屬于整個類,即不用建立任何對象也可以直接調用!
static内部隻能出現static變量和其他static方法!而且static方法中還不能使用this....等關鍵字..因為它是屬于整個類!
2.靜态方法效率上要比執行個體化高,靜态方法的缺點是不自動進行銷毀,而執行個體化的則可以做銷毀。
3.靜态方法和靜态變量建立後始終使用同一塊記憶體,而使用執行個體的方式會建立多個記憶體.
4.C#中的方法有兩種:執行個體方法,靜态方法.
C#靜态方法與非靜态方法比較四、
C#靜态方法中擷取類的名稱
靜态方法中用:
string className = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName;
非靜态方法中還可以用:
string className = this.GetType().FullName;
C#靜态方法與非靜态方法的差別解析旨在诠釋C#靜态方法的含義,希望對你了解和學習C#靜态方法與非靜态方法有所幫助。
作者:Cat Qi
出處:http://qixuejia.cnblogs.com/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。