C#進階編程 學習總結

來源:互聯網
上載者:User

標籤:c#   靜態   建構函式   

1. C#靜態建構函式

  1、靜態建構函式既沒有存取修飾詞,也沒有參數。因為是.NET調用的,所以像public和private等修飾符就沒有意義了。
  2、是在建立第一個類執行個體或任何靜態成員被引用時,.NET將自動調用靜態建構函式來初始化類,也就是說我們無法直接調用靜態建構函式,也就無法控制什麼時候執行靜態建構函式了。
  3、一個類只能有一個靜態建構函式。
  4、無參數的建構函式可以與靜態建構函式共存。儘管參數列表相同,但一個屬於類,一個屬於執行個體,所以不會衝突。
  5、最多隻運行一次。
  6、靜態建構函式不可以被繼承。
  7、如果沒有寫靜態建構函式,而類中包含帶有初始值設定的靜態成員,那麼編譯器會自動產生預設的靜態建構函式。

public class A{    public static readonly int x;    static A()    {        x = B.y + 1;    }} class B{    public static int y = A.x + 1;     static void Main(string[] args)    {        Console.WriteLine("x:{0},y:{1}。", A.x, y);        Console.ReadLine();    }}
//<span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 18px;">x=1,y=2。</span>

簡單值類型的全域變數預設初始值都是0因為入口函數在類B,所以程式首先載入B,由於y是B的靜態成員,類一載入時便會計算y的值,但是發現y的值是通過賦值的方式獲得的,等號右邊用到了A的x,此時會立即計算x的值,x是通過類A的靜態建構函式初始化的,期間又引用了B的Y,此時y的值還是0(因為y的賦值語句還沒執行完,故其值還是預設的),得到x=0+1=1,繼續為y賦值得到y=x+1=2.

C#進階編程 學習總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.