最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#靜態(tài)構(gòu)造函數(shù)用法實(shí)例分析

 更新時(shí)間:2015年06月30日 11:16:44   作者:xtechnet  
這篇文章主要介紹了C#靜態(tài)構(gòu)造函數(shù)用法,以實(shí)例形式較為詳細(xì)的分析了C#靜態(tài)構(gòu)造函數(shù)的用途、實(shí)現(xiàn)方法及使用技巧,需要的朋友可以參考下

本文實(shí)例講述了C#靜態(tài)構(gòu)造函數(shù)用法。分享給大家供大家參考。具體如下:

當(dāng)我們想初始化一些靜態(tài)變量的時(shí)候,就需要用到靜態(tài)構(gòu)造函數(shù)了。這個(gè)靜態(tài)構(gòu)造函數(shù)屬于類,而不屬于實(shí)例,就是說(shuō)這個(gè)構(gòu)造函數(shù)只會(huì)被執(zhí)行一次,即:在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,由.NET自動(dòng)調(diào)用。

現(xiàn)在碰到這樣一個(gè)場(chǎng)景:提供一個(gè)靜態(tài)方法,這個(gè)靜態(tài)方法在不同的地方使用,涉及到一個(gè)參數(shù)值不同,而其他內(nèi)容都完全一致。如果是將靜態(tài)方法的內(nèi)容復(fù)制出來(lái)做成另外一個(gè)方法,代碼冗余太多,做法不可取。使用靜態(tài)構(gòu)造函數(shù)處理靜態(tài)變量,則可以盡最大程度簡(jiǎn)化代碼。如下示例:

/// <summary>
/// 基類
/// </summary>
public class A
{
  public static string Field = "original-test";
  //靜態(tài)構(gòu)造函數(shù)
  static A()
  {
    Field = "test-a";
  }
  public static void Test()
  {
    Console.WriteLine("the output is : " + Field);
  }
}
/// <summary>
/// 子類
/// </summary>
public class B : A
{
  //靜態(tài)構(gòu)造函數(shù)
  static B()
  {
    Field = "test-b";
  }
  public static new void Test()
  {
    A.Test();
    //調(diào)用基類方法,這個(gè)對(duì)基類Test函數(shù)的覆蓋很重要,沒(méi)有這個(gè),那么調(diào)用B.Test()的時(shí)候其實(shí)是調(diào)用基類的Test方法。
  }
}

如代碼所示,類型B繼承于基類型A。B中的靜態(tài)構(gòu)造函數(shù)對(duì)靜態(tài)變量Field進(jìn)行賦值,這個(gè)會(huì)在調(diào)用子類中的Test方法之前調(diào)用,而B(niǎo)中Test方法的實(shí)現(xiàn)則是完全調(diào)用基類A的Test方法,這樣,在方法執(zhí)行的時(shí)候,方法中使用的靜態(tài)變量Field的值就是在B的靜態(tài)構(gòu)造函數(shù)中賦值之后的test-b。

調(diào)用結(jié)果如下:

static void Main(string[] args)
{
  A.Test();//輸出the output is : test-a
  B.Test();//輸出the output is : test-b
  Console.ReadLine();
}

A.Test()調(diào)用,F(xiàn)ield值為test-a;而B(niǎo).Test()調(diào)用,F(xiàn)ield值為test-b。

這樣,當(dāng)靜態(tài)方法的實(shí)現(xiàn)邏輯復(fù)雜的時(shí)候,就可以針對(duì)需要將這個(gè)方法進(jìn)行個(gè)性化實(shí)現(xiàn)的需求的時(shí)候簡(jiǎn)化代碼:子類在靜態(tài)構(gòu)造函數(shù)中對(duì)靜態(tài)變量重新賦值,然后重新實(shí)現(xiàn)基類中的靜態(tài)方法。

(注意,后面的重新實(shí)現(xiàn)基類中的靜態(tài)方法是必須的,否則輸出B.Test()的時(shí)候,調(diào)用基類的Test()方法,使用的Field變量則是基類中的變量,那時(shí)輸出則變成如下:)

static void Main(string[] args)
{
  A.Test();//輸出the output is : test-a
  B.Test();//輸出the output is : test-a。
  //因?yàn)闆](méi)有覆蓋子類方法,等同于A.Test()
  Console.ReadLine();
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#獲取任務(wù)欄顯示進(jìn)程的方法

    C#獲取任務(wù)欄顯示進(jìn)程的方法

    這篇文章主要介紹了C#獲取任務(wù)欄顯示進(jìn)程的方法,涉及C#針對(duì)進(jìn)程操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • c#數(shù)據(jù)庫(kù)與TXT導(dǎo)入導(dǎo)出的實(shí)例

    c#數(shù)據(jù)庫(kù)與TXT導(dǎo)入導(dǎo)出的實(shí)例

    最近剛學(xué)完ADO.NET,做了個(gè)數(shù)據(jù)導(dǎo)入導(dǎo)出的題目,是將txt中的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),然后將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出到txt中,這里說(shuō)的數(shù)據(jù)的格式是“tom|23”,tom指名字,23指年齡。廢話也不多說(shuō)了,大家直接看代碼。
    2013-04-04
  • 可空類型Nullable<T>用法詳解

    可空類型Nullable<T>用法詳解

    本文詳細(xì)講解了可空類型Nullable<T>的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例

    C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • C#常用的數(shù)據(jù)格式轉(zhuǎn)換匯總

    C#常用的數(shù)據(jù)格式轉(zhuǎn)換匯總

    這篇文章介紹了C#常用的數(shù)據(jù)格式轉(zhuǎn)換,有需要的朋友可以參考一下
    2013-10-10
  • C#實(shí)現(xiàn)Check Password和鎖定輸錯(cuò)密碼鎖定賬戶功能

    C#實(shí)現(xiàn)Check Password和鎖定輸錯(cuò)密碼鎖定賬戶功能

    C#實(shí)現(xiàn)的Check Password,并根據(jù)輸錯(cuò)密碼的次數(shù)分情況鎖定賬戶:如果輸入錯(cuò)誤3次,登錄賬戶鎖定5分鐘并提示X點(diǎn)X分后重試登錄,具體實(shí)現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧
    2020-01-01
  • Unity接入百度AI實(shí)現(xiàn)貨幣識(shí)別

    Unity接入百度AI實(shí)現(xiàn)貨幣識(shí)別

    本文主要介紹了在Unity中接入百度AI,從而實(shí)現(xiàn)貨幣識(shí)別,可以返回貨幣的名稱、代碼、面值、年份信息等,感興趣的可以跟隨小編學(xué)習(xí)一下
    2022-01-01
  • C#讀取CSV文件的方法總結(jié)

    C#讀取CSV文件的方法總結(jié)

    CSV文件是一種簡(jiǎn)單的文本文件格式,用于存儲(chǔ)表格數(shù)據(jù),在C#中,有多種方法可以用于讀取CSV文件,本文將介紹幾種常見(jiàn)的讀取CSV文件的方法,包括使用System.IO命名空間中的類、使用CsvHelper庫(kù)以及使用LINQ,需要的朋友可以參考下
    2024-05-05
  • C# .NET中Socket簡(jiǎn)單實(shí)用框架的使用教程

    C# .NET中Socket簡(jiǎn)單實(shí)用框架的使用教程

    最近一個(gè)項(xiàng)目因?yàn)橐玫絊ocket傳輸問(wèn)題,所以決定學(xué)習(xí)一下,將自己學(xué)習(xí)的內(nèi)容總結(jié)分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于C# .NET中Socket簡(jiǎn)單實(shí)用框架使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • C#實(shí)現(xiàn)壓縮HTML代碼的方法

    C#實(shí)現(xiàn)壓縮HTML代碼的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)壓縮HTML代碼的方法,是非常實(shí)用的功能,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

泗阳县| 浮梁县| 高碑店市| 台南市| 鄂温| 白朗县| 鄂尔多斯市| 贵溪市| 南和县| 吴川市| 兴海县| 江孜县| 枞阳县| 德昌县| 民和| 大庆市| 蕲春县| 民乐县| 灯塔市| 铁力市| 乌兰浩特市| 饶河县| 灵璧县| 南宁市| 奉化市| 龙口市| 彰化市| 上林县| 灵璧县| 体育| 仁布县| 慈溪市| 图片| 达日县| 德兴市| 深泽县| 金湖县| 舟曲县| 泰来县| 获嘉县| 仙桃市|