欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析C#中靜態(tài)方法和非靜態(tài)方法的區(qū)別

 更新時(shí)間:2017年09月06日 08:56:49   作者:AmosHs丶  
C#靜態(tài)方法與非靜態(tài)方法的區(qū)別不僅僅是概念上的,那么他們有什么具體的區(qū)別呢?讓我們通過(guò)本文向大家介紹下C#中靜態(tài)方法和非靜態(tài)方法的區(qū)別,一起看看吧

靜態(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)方法

  這是本人寫的一個(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方法

相關(guān)文章

  • C#淺拷貝和深拷貝實(shí)例解析

    C#淺拷貝和深拷貝實(shí)例解析

    這篇文章主要介紹了C#淺拷貝和深拷貝,是比較重要的概念,需要的朋友可以參考下
    2014-08-08
  • C# PadLeft、PadRight用法詳解

    C# PadLeft、PadRight用法詳解

    本文主要介紹了C# PadLeft、PadRight用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#創(chuàng)建WCF服務(wù)控制臺(tái)應(yīng)用程序詳解

    C#創(chuàng)建WCF服務(wù)控制臺(tái)應(yīng)用程序詳解

    這篇文章主要為大家詳細(xì)介紹了C#創(chuàng)建WCF服務(wù)控制臺(tái)應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C#中sqlDataRead 的三種方式遍歷讀取各個(gè)字段數(shù)值的方法

    C#中sqlDataRead 的三種方式遍歷讀取各個(gè)字段數(shù)值的方法

    這篇文章主要介紹了C#中 sqlDataRead 的三種方式遍歷讀取各個(gè)字段數(shù)值的方法,每種方法給大家介紹的都非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • C#簡(jiǎn)單寫入xml文件的方法

    C#簡(jiǎn)單寫入xml文件的方法

    這篇文章主要介紹了C#簡(jiǎn)單寫入xml文件的方法,可實(shí)現(xiàn)C#針對(duì)XML文件簡(jiǎn)單寫入的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#自定義針對(duì)URL地址的處理類實(shí)例

    C#自定義針對(duì)URL地址的處理類實(shí)例

    這篇文章主要介紹了C#自定義針對(duì)URL地址的處理類,實(shí)例分析了C#解析URL地址實(shí)現(xiàn)URl參數(shù)加密解密及參數(shù)解析的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C#以太網(wǎng)Sockets服務(wù)器設(shè)計(jì)實(shí)現(xiàn)

    C#以太網(wǎng)Sockets服務(wù)器設(shè)計(jì)實(shí)現(xiàn)

    本文主要介紹了C#以太網(wǎng)Sockets服務(wù)器設(shè)計(jì)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C# WinForm實(shí)現(xiàn)自動(dòng)更新程序的方法詳解

    C# WinForm實(shí)現(xiàn)自動(dòng)更新程序的方法詳解

    這一篇就著重寫一下客戶端的代碼,客戶端主要實(shí)現(xiàn)的有:?jiǎn)?dòng)后檢測(cè)本地的xml文件,然后發(fā)送到服務(wù)器獲取需要更新的文件以及版本列表,感興趣的小伙伴可以了解一下
    2022-10-10
  • C#中常用的正則表達(dá)式實(shí)例

    C#中常用的正則表達(dá)式實(shí)例

    正則表達(dá)式在程序設(shè)計(jì)中有著重要的位置,它經(jīng)常被用于處理字符串信息,下面是C#中常用的正則表達(dá)式實(shí)例,感興趣的朋友一起看看吧
    2016-10-10
  • C#實(shí)現(xiàn)關(guān)機(jī)功能

    C#實(shí)現(xiàn)關(guān)機(jī)功能

    這篇文章介紹了C#實(shí)現(xiàn)關(guān)機(jī)功能的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論