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

C#高級編程 學習總結

編輯:C#入門知識

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();
    }
}
//x=1,y=2。

簡單值類型的全局變量默認初始值都是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.

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