C# 靜態建構函式詳解(轉自:http://hi.baidu.com/jiang_yy_jiang/blog/item/07d5cbe9ff6b4d32b90e2d5a.html)

來源:互聯網
上載者:User

關於靜態函數用的不多,但是在實際應用和代碼中還是需要注意其細節的問題。靜態成員在類中屬於整個類的,而不是某一個單獨的對象的。那麼靜態建構函式返回的就是整個類,而不是一個單獨的執行個體成員,因此這隻需要調用執行個體化一次,這也是符合人的思維的。就好比猿猴產生人,只需要一次就夠了,接下來人的構造執行個體可以無數次,但產生人類只要一次足矣。

下面是一個關於靜態建構函式的經典執行個體:【建議事先得出理論結果看你對靜態建構函式是否理解】

using System;

 

namespace StaticMethod1
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 o1 = new Class1();
            Class1 o2 = new Class1();
            Console.ReadKey();
        }
        class Class1
        {
            private static int count = 0;

            static Class1()
            {
                count++;
                System.Console.WriteLine("Static" + count.ToString());
            }
            public Class1()
            {
                count++;
                System.Console.WriteLine("Public" + count.ToString());
            }
        }
    }
}

/*【知識點】
* 靜態建構函式是C#的一個新特性,在編程過程中用處並不廣,它的主要目的是用於初始化一些靜態變數。   
* 因為這個建構函式是屬於類的,而不屬於任何一個執行個體,所以這個建構函式只會被執行一次,而且是在建立此類的第一個執行個體或引用任何靜態成 * 員之前,由.NET自動調用。 
*/


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

/*
【靜態建構函式具有以下特點】:
1靜態建構函式既沒有存取修飾詞,也沒有參數。
2在建立第一個執行個體或引用任何靜態成員之前,將自動調用靜態建構函式來初始化類。 
3無法直接調用靜態建構函式。
4在程式中,使用者無法控制何時執行靜態建構函式。
5靜態建構函式的典型用途是:當類使用記錄檔時,將使用這種建構函式向記錄檔中寫入項。
6靜態建構函式在為Unmanaged 程式碼建立封裝類時也很有用,此時該建構函式可以調用 LoadLibrary 方法。
*/

效果如下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.