国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

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

2020-01-24 01:39:53
字體:
來源:轉載
供稿:網(wǎng)友

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

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

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

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

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

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

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.Test()調(diào)用,F(xiàn)ield值為test-b。

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

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

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

希望本文所述對大家的C#程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丘北县| 古田县| 会理县| 子长县| 合阳县| 琼结县| 毕节市| 栾城县| 东丰县| 太湖县| 梓潼县| 黄山市| 沅陵县| 双城市| 波密县| 黄山市| 阿拉尔市| 始兴县| 方山县| 神农架林区| 剑阁县| 寿宁县| 香格里拉县| 铁岭县| 大厂| 利津县| 聊城市| 海盐县| 淮阳县| 松滋市| 扬中市| 进贤县| 台州市| 靖州| 文登市| 霍州市| 石柱| 黎平县| 武威市| 四会市| 如皋市|