關於靜態函數用的不多,但是在實際應用和代碼中還是需要注意其細節的問題。靜態成員在類中屬於整個類的,而不是某一個單獨的對象的。那麼靜態建構函式返回的就是整個類,而不是一個單獨的執行個體成員,因此這隻需要調用執行個體化一次,這也是符合人的思維的。就好比猿猴產生人,只需要一次就夠了,接下來人的構造執行個體可以無數次,但產生人類只要一次足矣。
下面是一個關於靜態建構函式的經典執行個體:【建議事先得出理論結果看你對靜態建構函式是否理解】
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 方法。
*/
效果如下: