類中靜態(tài)方法與動態(tài)方法的區(qū)別

1.靜態(tài)的方法在整個應(yīng)用程序其間存儲在內(nèi)存中,速度快齐饮,但占用內(nèi)存.

class A

{

    public static string b()

    {

        return "Hello";

    }

}  

用法: A.b(); //調(diào)用方便

2.動態(tài)的方法在先聲明類實(shí)例才能調(diào)用類中的方法.

class A

{

    public string b()

    {

        return "Hello";

    }

}  

用法: A a = new a(); a.b();

3.一般使用頻繁的方法用靜態(tài)方法,用的少的方法用動態(tài)的笤昨。靜態(tài)的速度快祖驱,占內(nèi)存。動態(tài)的速度相對慢些瞒窒,但調(diào)用完后捺僻,立即釋放類,可以節(jié)省內(nèi)存崇裁,可以根據(jù)自己的需要選擇是用動態(tài)方法還是靜態(tài)方法匕坯。

4.靜態(tài)方法主要的問題就是數(shù)據(jù)同步的問題。如果你的靜態(tài)方法的類中不保存私有變量那么什么問題都不會有的拔稳。最好是包要操作的數(shù)據(jù)全部以參數(shù)的方式傳到方法中去

5. 靜態(tài)方法是類方法葛峻,調(diào)用時不需要創(chuàng)建類實(shí)例。
6. 靜態(tài)方法是靜態(tài)綁定到子類巴比,不是被繼承术奖。

為了形象說明,請看下面的例子轻绞。

namespace Test.CUI
{
class Base
{
public Base()
{
Console.WriteLine("Base...");
}

public void Method()
{
}

public static void StaticMethod()
{
}

}

class Class1 : Base
{
public Class1()
{
Console.WriteLine("Class1...");
}

static void Test1()
{
  Class1 o = new Class1();
  o.Method();
}

static void Test2()
{
  Class1.StaticMethod();
}

static void Main(string[] args) 
{ 
} 

}
}

接下來采记,我們查看編譯后的IL代碼就會明白其中的奧妙。

.method private hidebysig static void Test1() cil managed
{
// Code Size: 13 byte(s)
.maxstack 1
.locals (
Test.CUI.Class1 class1)
L_0000: newobj instance void Test.CUI.Class1::.ctor() // 創(chuàng)建對象實(shí)例
L_0005: stloc.0
L_0006: ldloc.0
L_0007: callvirt instance void Test.CUI.Base::Method() // 使用callvirt
L_000c: ret
}

.method private hidebysig static void Test2() cil managed
{
// Code Size: 7 byte(s)
.maxstack 0
L_0000: call void Test.CUI.Base::StaticMethod() // 使用call
L_0005: nop
L_0006: ret
}

CLR提供了2個IL指令來調(diào)用方法:call和callvirt铲球。其中call指令根據(jù)引用變量的類型(即引用變量的靜態(tài)類型挺庞、聲明類型)來調(diào)用一個方法,而callvirt指令根據(jù)引用變量的對象類型(引用變量的動態(tài)類型稼病、實(shí)際類型)來調(diào)用一個方法选侨。

7.從面向?qū)ο蟮慕嵌葋砜?
靜態(tài)方法面向的是類的操作,而實(shí)力方法面向的是對象.舉個例子來說
例如動物,是一類,一只貓啦,一條狗啦,都是它的子類的一個對象,這些對象不同的貓和狗可能有不同的消化系統(tǒng),還有行走之類的,所以它們的"爬行"方式可以不同,但是這些動物的死法都是一樣的,那就是心跳停止,對于動物類的設(shè)計(jì)可以考慮這么一個方案:
public static void Kill ( Animal aAnimal)
{
//let the animal stop heart beating
}
對于每個對象的具體實(shí)現(xiàn)方式,由對象來完成.

8.靜態(tài)方法修改的是類的狀態(tài),而對象修改的是各個對象的狀態(tài),這點(diǎn)也是它們重要的區(qū)別

9.類的實(shí)例化調(diào)用是在類的生命周期中存在掖鱼,當(dāng)類沒有了以后,對應(yīng)的實(shí)例也就沒有了援制,對應(yīng)的方法也就沒有了戏挡,靜態(tài)類不然,只要你引用了那個靜態(tài)類的命名空間晨仑,他就會一直存在褐墅,知道你退出系統(tǒng)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洪己,一起剝皮案震驚了整個濱河市妥凳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌答捕,老刑警劉巖逝钥,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拱镐,居然都是意外死亡艘款,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門沃琅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哗咆,“玉大人,你說我怎么就攤上這事益眉∩渭恚” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵呜叫,是天一觀的道長空繁。 經(jīng)常有香客問我殿衰,道長朱庆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任闷祥,我火速辦了婚禮娱颊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凯砍。我一直安慰自己箱硕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布悟衩。 她就那樣靜靜地躺著剧罩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪座泳。 梳的紋絲不亂的頭發(fā)上惠昔,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天幕与,我揣著相機(jī)與錄音,去河邊找鬼镇防。 笑死啦鸣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的来氧。 我是一名探鬼主播诫给,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啦扬!你這毒婦竟也來了中狂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扑毡,失蹤者是張志新(化名)和其女友劉穎吃型,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僚楞,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勤晚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泉褐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赐写。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖膜赃,靈堂內(nèi)的尸體忽然破棺而出挺邀,到底是詐尸還是另有隱情,我是刑警寧澤跳座,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布端铛,位于F島的核電站,受9級特大地震影響疲眷,放射性物質(zhì)發(fā)生泄漏禾蚕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一狂丝、第九天 我趴在偏房一處隱蔽的房頂上張望换淆。 院中可真熱鬧,春花似錦几颜、人聲如沸倍试。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽县习。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躁愿,已是汗流浹背哈蝇。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攘已,地道東北人炮赦。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像样勃,于是被迫代替她去往敵國和親吠勘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法峡眶,類相關(guān)的語法剧防,內(nèi)部類的語法,繼承相關(guān)的語法辫樱,異常的語法峭拘,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • 動態(tài)調(diào)用動態(tài)庫方法c/c++linuxwindows 關(guān)于動態(tài)調(diào)用動態(tài)庫方法說明 一、 動態(tài)庫概述 1狮暑、 動態(tài)庫的...
    KINGZ1993閱讀 13,911評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鸡挠,服務(wù)發(fā)現(xiàn),斷路器搬男,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 2017.1.28 1拣展、感謝小姨,為大家提供了過年的第一次團(tuán)聚缔逛。謝謝备埃,謝謝,謝謝褐奴! 2按脚、感謝二舅帶著女兒做陶泥。謝...
    悄然h閱讀 48評論 0 0
  • 昨天,一件事情讓我高興了一整天匪补。 我的實(shí)驗(yàn)短片《花生樹》成功投到了青檬公益電影展伞辛,參與展映評獎烂翰。前幾天夯缺,校電影社社...
    下自成蹊L閱讀 450評論 0 1