溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中關(guān)于靜態(tài)與非靜態(tài)方法有什么區(qū)別

發(fā)布時(shí)間:2020-07-14 09:36:57 來(lái)源:億速云 閱讀:610 作者:Leah 欄目:編程語(yǔ)言

C#中關(guān)于靜態(tài)與非靜態(tài)方法有什么區(qū)別?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

靜態(tài)方法和非靜態(tài)方法的區(qū)別:

  1.靜態(tài)方法不需要類實(shí)例化就可以調(diào)用,反之非靜態(tài)方法需要實(shí)例化后才能調(diào)用;

  2.靜態(tài)方法只能訪問(wèn)靜態(tài)成員和方法,非靜態(tài)方法都可以訪問(wèn);

  3.靜態(tài)方法不能標(biāo)記為override,導(dǎo)致派生類不能重寫,但是可以訪問(wèn);

  4.靜態(tài)成員是在第一次使用時(shí)進(jìn)行初始化。非靜態(tài)的成員是在創(chuàng)建對(duì)象的時(shí)候,從內(nèi)存分配上來(lái)說(shuō)靜態(tài)是連續(xù)的,非靜態(tài)在內(nèi)存的存儲(chǔ)上是離散的,因此靜態(tài)方法和非靜態(tài)方法,在調(diào)用速度上,靜態(tài)方法速度一定會(huì)快點(diǎn),因?yàn)榉庆o態(tài)方法需要實(shí)例化,分配內(nèi)存,但靜態(tài)方法不用,但是這種速度上差異可以忽略不計(jì)

何時(shí)用靜態(tài)方法,何時(shí)用實(shí)例方法:

  1.一個(gè)方法和他所在類的實(shí)例對(duì)象無(wú)關(guān),不依賴new出來(lái)的實(shí)例,那么它就應(yīng)該是靜態(tài)的

  2.不需要面向?qū)ο蟮睦砟畹臅r(shí)候用靜態(tài);比如動(dòng)物-> RUN ,因?yàn)槟憧赡軙?huì)擴(kuò)展出貓 run、狗 run,這時(shí)候就需要用非靜態(tài)的方法

關(guān)于線程安全:

  靜態(tài)方法只有一個(gè)實(shí)例,當(dāng)有靜態(tài)變量的時(shí)候,對(duì)于高并發(fā)的時(shí)候,并發(fā)的所有執(zhí)行都走那個(gè)方法,靜態(tài)變量的值就會(huì)發(fā)生改變,導(dǎo)致出現(xiàn)問(wèn)題;

  當(dāng)然并發(fā)不安全跟方法本身沒(méi)關(guān)系,跟共享的那個(gè)資源有關(guān)系比如某個(gè)變量,每個(gè)線程都對(duì)其進(jìn)行操作,都能改變其值,多線程(并發(fā)其實(shí)就是多線程),操作它,其值混亂,就有問(wèn)題了

為什么要用非靜態(tài)方法

C#中關(guān)于靜態(tài)與非靜態(tài)方法有什么區(qū)別

  這是本人寫的一個(gè)方法,當(dāng)初直接寫成static方法,沒(méi)有別人的原因,是因?yàn)椴幌雽?shí)例化可以少些一行代碼,并沒(méi)有想過(guò)靜態(tài)和非靜態(tài)的區(qū)別= =!~~;當(dāng)然寫成非static的方法也是可以的;

  原因

  1.因?yàn)榉椒ㄐ枰貜?fù)的調(diào)用,每次都去new一次會(huì)造成內(nèi)存的開(kāi)銷,使用靜態(tài)的方法就會(huì)一直在內(nèi)存中,不需要重新new一塊空間初始化數(shù)據(jù);

  2.不需要去做OO;

  3.方法不依賴new出來(lái)的內(nèi)容;

  比較經(jīng)典的static方法,DBHelp里面基本上都是static方法

看完上述內(nèi)容,你們掌握C#中關(guān)于靜態(tài)與非靜態(tài)方法有什么區(qū)別的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI