|
類的靜態(tài)構(gòu)造函數(shù)也叫類型構(gòu)造器,靜態(tài)構(gòu)造器,他調(diào)用的時(shí)刻由CLR來控制:
CLR會(huì)選擇如下時(shí)間之一來調(diào)用靜態(tài)構(gòu)造函數(shù):
1,在類型的第一個(gè)實(shí)例創(chuàng)建之前,或類型的非繼承字段或成員第一次訪問之前。這里的“之前”,代表前后銜接的意思。這里的時(shí)刻是精確的!
2,在非繼承的靜態(tài)字段或成員第一次訪問之前的某個(gè)時(shí)刻,具體時(shí)刻不定!
由于調(diào)用的時(shí)刻不確定,所以我們最好不要編寫依賴于特定的靜態(tài)構(gòu)造函數(shù)的執(zhí)行順序的代碼,這樣很容易產(chǎn)生不可預(yù)料的后果!
下面大家看三個(gè)Demo,我們來更加深入的看看靜態(tài)構(gòu)造函數(shù)的一些有趣的行為:
Demo1:
static void Main(string[] args)
{
Console.WriteLine(B.strText);
}
public class A
{
public static string strText;
static A()
{
strText = "aaaa";
}
}
public class B : A
{
static B()
{
strText = "bbbb";
}
}
NET技術(shù):靜態(tài)構(gòu)造函數(shù)趣談!,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。