程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#靜態結構函數用法實例剖析

C#靜態結構函數用法實例剖析

編輯:C#入門知識

C#靜態結構函數用法實例剖析。本站提示廣大學習愛好者:(C#靜態結構函數用法實例剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#靜態結構函數用法實例剖析正文


本文實例講述了C#靜態結構函數用法。分享給年夜家供年夜家參考。詳細以下:

當我們想初始化一些靜態變量的時刻,就須要用到靜態結構函數了。這個靜態結構函數屬於類,而不屬於實例,就是說這個結構函數只會被履行一次,即:在創立第一個實例或援用任何靜態成員之前,由.NET主動挪用。

如今碰著如許一個場景:供給一個靜態辦法,這個靜態辦法在分歧的處所應用,觸及到一個參數值分歧,而其他內容都完整分歧。假如是將靜態辦法的內容復制出來做成別的一個辦法,代碼冗余太多,做法弗成取。應用靜態結構函數處置靜態變量,則可以盡最年夜水平簡化代碼。以下示例:

/// <summary>
/// 基類
/// </summary>
public class A
{
  public static string Field = "original-test";
  //靜態結構函數
  static A()
  {
    Field = "test-a";
  }
  public static void Test()
  {
    Console.WriteLine("the output is : " + Field);
  }
}
/// <summary>
/// 子類
/// </summary>
public class B : A
{
  //靜態結構函數
  static B()
  {
    Field = "test-b";
  }
  public static new void Test()
  {
    A.Test();
    //挪用基類辦法,這個對基類Test函數的籠罩很主要,沒有這個,那末挪用B.Test()的時刻實際上是挪用基類的Test辦法。
  }
}

如代碼所示,類型B繼續於基類型A。B中的靜態結構函數對靜態變量Field停止賦值,這個會在挪用子類中的Test辦法之前挪用,而B中Test辦法的完成則是完整挪用基類A的Test辦法,如許,在辦法履行的時刻,辦法中應用的靜態變量Field的值就是在B的靜態結構函數中賦值以後的test-b。

挪用成果以下:

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

A.Test()挪用,Field值為test-a;而B.Test()挪用,Field值為test-b。

如許,當靜態辦法的完成邏輯龐雜的時刻,便可以針對須要將這個辦法停止特性化完成的需求的時刻簡化代碼:子類在靜態結構函數中對靜態變量從新賦值,然後從新完成基類中的靜態辦法。

(留意,前面的從新完成基類中的靜態辦法是必需的,不然輸入B.Test()的時刻,挪用基類的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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved