C#靜態(tài)方法與非靜態(tài)方法實(shí)例分析
本文實(shí)例分析了C#靜態(tài)方法與非靜態(tài)方法,并對其用法進(jìn)行了較為全面的分析。分享給大家供大家參考。具體分析如下:
通常來說,C#的類中可以包含兩種方法:靜態(tài)方法和非靜態(tài)方法。
使用了static 修飾符的方法為靜態(tài)方法,反之則是非靜態(tài)方法。
靜態(tài)方法是一種特殊的成員方法,它不屬于類的某一個(gè)具體的實(shí)例,而是屬于類本身。所以對靜態(tài)方法不需要首先創(chuàng)建一個(gè)類的實(shí)例,而是采用 類名.靜態(tài)方法 的格式 。
1)static方法是類中的一個(gè)成員方法,屬于整個(gè)類,即不用創(chuàng)建任何對象也可以直接調(diào)用。
static內(nèi)部只能出現(xiàn)static變量和其他static方法,而且static方法中還不能使用this等關(guān)鍵字,因?yàn)樗菍儆谡麄€(gè)類。
2)靜態(tài)方法效率上要比實(shí)例化高,靜態(tài)方法的缺點(diǎn)是不自動進(jìn)行銷毀,而實(shí)例化的則可以做銷毀。
3)靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,而使用實(shí)例的方式會創(chuàng)建多個(gè)內(nèi)存。
4)那么在程序中什么地方可以利用靜態(tài)字段和靜態(tài)構(gòu)造方法,通常適用于于一些不會經(jīng)常變化而又頻繁使用的數(shù)據(jù),比如連接字符串,配置信息等,當(dāng)滿足上面所說的兩點(diǎn)時(shí),進(jìn)行一次讀取,以后就可以方便的使用了,同時(shí)也節(jié)約了托管資源,因?yàn)閷τ陟o態(tài)成員,一個(gè)靜態(tài)字段只標(biāo)識一個(gè)存儲位置。對一個(gè)類無論創(chuàng)建了多少個(gè)實(shí)例,它的靜態(tài)字段永遠(yuǎn)都只有一個(gè)副本。
靜態(tài)成員存在于內(nèi)存,非靜態(tài)成員需要實(shí)例化才會分配內(nèi)存,所以靜態(tài)成員不能訪問非靜態(tài)的成員。因?yàn)殪o態(tài)成員存在于內(nèi)存,所以非靜態(tài)成員可以直接訪問類中靜態(tài)的成員。公用的處理函數(shù),使用靜態(tài)方法應(yīng)該沒有問題,牽涉到數(shù)據(jù)共享,靜態(tài)變量的函數(shù)要多考慮,靜態(tài)變量要小心使用。
靜態(tài)方法:
原理就是共享代碼段;
共享代碼段不會產(chǎn)生任何問題;
因?yàn)榇a段都是給CPU作為"讀取"用的,除非你進(jìn)行惡意"修改"運(yùn)行時(shí)的代碼段;
所以靜態(tài)方法是可以放心使用的;
靜態(tài)變量:
原理就是共享數(shù)據(jù)段;
只要沒有進(jìn)行"寫入"操作就不會產(chǎn)生問題,但是數(shù)據(jù)通常都是用于讀和寫,所以靜態(tài)變量要注意使用;
下面是一個(gè)使用靜態(tài)方法的簡單例子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int i = MyClass.Add(7, 11); //調(diào)用靜態(tài)方法 Console.WriteLine(i); Console.ReadKey(); } } class MyClass { public static int Add(int x, int y) { return x + y; } } }
希望本文所述對大家C#程序設(shè)計(jì)的學(xué)習(xí)有所幫助。
相關(guān)文章
php代碼中使用換行及(\n或\r\n和br)的應(yīng)用
瀏覽器識別不了\n或\r\n,這兩個(gè)換行符是文本換行符,文本文件有效;如果需要將結(jié)果輸出到瀏覽器或打印到顯示器,代碼中使用br;如果只是在源代碼中換行,則使用\n或\r\n,感興趣的朋友可以了解下,或許對你學(xué)習(xí)php有所幫助2013-02-02PHP擴(kuò)展模塊Pecl、Pear以及Perl的區(qū)別
這篇文章主要介紹了PHP擴(kuò)展模塊Pecl、Pear以及Perl的區(qū)別,需要的朋友可以參考下2014-04-04PHP實(shí)現(xiàn)的MD5結(jié)合RSA簽名算法實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)的MD5結(jié)合RSA簽名算法,結(jié)合實(shí)例形式分析了php使用md5結(jié)合RSA實(shí)現(xiàn)的簽名算法相關(guān)操作技巧,并附帶了RSA公鑰與私鑰的相關(guān)說明,需要的朋友可以參考下2017-10-10php.ini-dist 和 php.ini-recommended 的區(qū)別介紹(方便開發(fā)與安全的朋友)
在下載php后,進(jìn)行配置的時(shí)候,會出現(xiàn)兩個(gè)php.ini:php.ini-dist和php.ini-recommended,那有什么不同呢?應(yīng)該如果選擇適合自己的版本呢2012-07-07