c#靜態(tài)方法和非靜態(tài)方法詳細介紹
更新時間:2014年02月11日 16:34:07 作者:
這篇文章主要介紹了c#靜態(tài)方法和非靜態(tài)方法,需要的朋友可以參考下
C#的類中可以包含兩種方法:靜態(tài)方法和非靜態(tài)方法。
使用了static 修飾符的方法為靜態(tài)方法,反之則是非靜態(tài)方法。
靜態(tài)方法是一種 特殊的成員方法,它不屬于類的某一個具體的實例,而是屬于類本身。
所以對靜態(tài)方法不需要 首先創(chuàng)建一個類的實例,而是采用類名.靜態(tài)方法的格式 。
1.static方法是類中的一個成員方法,屬于整個類,即不用創(chuàng)建任何對象也可以直接調(diào)用!
static內(nèi)部只能出現(xiàn)static變量和其他static方法!而且static方法中還不能使用this....等關(guān)鍵字..因為它是 屬于整個類!
2.靜態(tài)方法效率上要比實例化高,靜態(tài)方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。
3.靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,而使用實例的方式會創(chuàng)建多個內(nèi)存.
4.C#中的方法有兩種:實例方法,靜態(tài)方法. 類的方法代碼只有一份,它們的生命周期和類是一致的.實例方法是通過對象名調(diào)用的,靜態(tài)方法與類關(guān)聯(lián)而不是 與對象名關(guān)聯(lián).
5.那么在程序中什么地方可以利用靜態(tài)字段和靜態(tài)構(gòu)造方法,通常適用于于一些不會經(jīng)常變化而又頻繁使用的數(shù) 據(jù),比如連接字符串,配置信息等,當滿足上面所 說的兩點時,進行一次讀取,以后就可以方便的使用了,同 時也節(jié)約了托管資源,因為對于靜態(tài)成員,一個靜態(tài)字段只標識一個存儲位置。
對一個類無論創(chuàng)建了多少 個實 例,它的靜態(tài)字段永遠都只有一個副本(副本我理解為只有一塊內(nèi)存 靜態(tài)成員存在于內(nèi)存,非靜態(tài)成員需要實例化才會分配內(nèi)存,所以靜態(tài)成員不能訪問非靜態(tài)的成員..因為靜態(tài)成員 存在于內(nèi)存,所以非靜態(tài)成員可以直接訪問類中靜態(tài)的成員.
公用的處理函數(shù),使用靜態(tài)方法應(yīng)該沒有問題..牽涉 到數(shù)據(jù)共享,靜態(tài)變量的函數(shù)要多考慮...靜態(tài)變量要小心使用..
靜態(tài)方法 原理就是共享代碼段 共享代碼段不會產(chǎn)生任何問題 因為代碼段都是給CPU作為"讀取"用的,除非你進行惡意"修改"運行時的代碼段 所以靜態(tài)方法是可以放心使用的
靜態(tài)變量 原理就是共享數(shù)據(jù)段 同上 只要沒有進行"寫入"操作就不會產(chǎn)生問題 但是數(shù)據(jù)通常都是用于讀和寫 所以靜態(tài)變量要注意使用
下面是一個使用靜態(tài)方法的例子
class Class1 {
[STAThread]
static void Main(string[] args)
{
int i = MyClass.Add(3,5); //調(diào)用靜態(tài)方法
Console.WriteLine(i);
}
}
class MyClass
{
public static int Add(int x,int y )
{ return x + y ;
}
}
使用了static 修飾符的方法為靜態(tài)方法,反之則是非靜態(tài)方法。
靜態(tài)方法是一種 特殊的成員方法,它不屬于類的某一個具體的實例,而是屬于類本身。
所以對靜態(tài)方法不需要 首先創(chuàng)建一個類的實例,而是采用類名.靜態(tài)方法的格式 。
1.static方法是類中的一個成員方法,屬于整個類,即不用創(chuàng)建任何對象也可以直接調(diào)用!
static內(nèi)部只能出現(xiàn)static變量和其他static方法!而且static方法中還不能使用this....等關(guān)鍵字..因為它是 屬于整個類!
2.靜態(tài)方法效率上要比實例化高,靜態(tài)方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。
3.靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,而使用實例的方式會創(chuàng)建多個內(nèi)存.
4.C#中的方法有兩種:實例方法,靜態(tài)方法. 類的方法代碼只有一份,它們的生命周期和類是一致的.實例方法是通過對象名調(diào)用的,靜態(tài)方法與類關(guān)聯(lián)而不是 與對象名關(guān)聯(lián).
5.那么在程序中什么地方可以利用靜態(tài)字段和靜態(tài)構(gòu)造方法,通常適用于于一些不會經(jīng)常變化而又頻繁使用的數(shù) 據(jù),比如連接字符串,配置信息等,當滿足上面所 說的兩點時,進行一次讀取,以后就可以方便的使用了,同 時也節(jié)約了托管資源,因為對于靜態(tài)成員,一個靜態(tài)字段只標識一個存儲位置。
對一個類無論創(chuàng)建了多少 個實 例,它的靜態(tài)字段永遠都只有一個副本(副本我理解為只有一塊內(nèi)存 靜態(tài)成員存在于內(nèi)存,非靜態(tài)成員需要實例化才會分配內(nèi)存,所以靜態(tài)成員不能訪問非靜態(tài)的成員..因為靜態(tài)成員 存在于內(nèi)存,所以非靜態(tài)成員可以直接訪問類中靜態(tài)的成員.
公用的處理函數(shù),使用靜態(tài)方法應(yīng)該沒有問題..牽涉 到數(shù)據(jù)共享,靜態(tài)變量的函數(shù)要多考慮...靜態(tài)變量要小心使用..
靜態(tài)方法 原理就是共享代碼段 共享代碼段不會產(chǎn)生任何問題 因為代碼段都是給CPU作為"讀取"用的,除非你進行惡意"修改"運行時的代碼段 所以靜態(tài)方法是可以放心使用的
靜態(tài)變量 原理就是共享數(shù)據(jù)段 同上 只要沒有進行"寫入"操作就不會產(chǎn)生問題 但是數(shù)據(jù)通常都是用于讀和寫 所以靜態(tài)變量要注意使用
下面是一個使用靜態(tài)方法的例子
復制代碼 代碼如下:
class Class1 {
[STAThread]
static void Main(string[] args)
{
int i = MyClass.Add(3,5); //調(diào)用靜態(tài)方法
Console.WriteLine(i);
}
}
class MyClass
{
public static int Add(int x,int y )
{ return x + y ;
}
}
相關(guān)文章
C#使用IComparer自定義List類實現(xiàn)排序的方法
這篇文章主要介紹了C#使用IComparer自定義List類實現(xiàn)排序的方法,涉及C#使用IComparer接口定義List類進行排序的相關(guān)技巧,需要的朋友可以參考下2015-08-08
c# 實現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的簡單實例
下面小編就為大家?guī)硪黄猚# 實現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
Unity 實現(xiàn)框選游戲戰(zhàn)斗單位的思路詳解
這篇文章主要介紹了Unity 如何實現(xiàn)框選游戲戰(zhàn)斗單位,本文簡單介紹如何實現(xiàn)即時戰(zhàn)略游戲中框選戰(zhàn)斗單位的功能,需要的朋友可以參考下2022-12-12

