C#靜態構造函式

靜態構造函式是C#的一個新特性,在編程過程中用處並不廣,它的主要目的是用於初始化一些靜態的變數。
因為這個構造函式是屬於類的,而不屬於任何一個實例,所以這個構造函式只會被執行一次,而且是在創建此類的第一個實例或引用任何靜態成員之前,由.NET自動調用。
在程式中我們可以這樣寫:
class SimpleClass
{
static public Object object;
// Static constructor
static SimpleClass()
{
// Initialize static parameter
somthing
}
}
也可以這樣寫,這和上面的做法其實沒有區別:
class SimpleClass
{
static public Object object = new Object();
}
在使用靜態構造函式的時候應該注意幾點:
1、靜態構造函式既沒有訪問修飾符,也沒有參數。
--因為是.NET調用的,所以像public和private等修飾符就沒有意義了。
2、在創建第一個類實例或任何靜態成員被引用時,.NET將自動調用靜態構造函式來初始化類。
--也就是說我們無法直接調用靜態構造函式,也不可能知道靜態構造函式何時會被調用。
3、一個類只能有一個靜態構造函式。
 4、無參數的構造函式可以與靜態構造函式共存。
--儘管參數列表相同,但一個屬於類,一個屬於實例,所以不會衝突。
5、最多只運行一次。
 6、靜態構造函式不可以被繼承。
 7、如果沒有寫靜態構造函式,而類中包含帶有初始值設定的靜態成員,那么編譯器會自動生成默認的靜態構造函式。
調用例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test1_constrator
{
class Program
{
static void Main(string[] ARGs)
{
Class1 o1 = new Class1();
Class1 o2 = new Class1();
}
}
class Class1
{
private static int count = 0;
static Class1(){
count++;
System.Console.Write("Static" + count.ToString());
}
public Class1()
{
count++;
System.Console.Write("Public" + count.ToString());
}
}
}

相關詞條

相關搜尋

熱門詞條

聯絡我們