欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 類型構(gòu)造器

 更新時間:2012年10月29日 13:46:42   作者:  
CLR還支持類型構(gòu)造器,也稱為靜態(tài)構(gòu)造器。c#類型構(gòu)造器可應(yīng)用引用類型和值類型,永遠(yuǎn)沒有參數(shù)
主要作用是:設(shè)置類型中靜態(tài)字段的初始化。類型構(gòu)造器不一定要在類中定義,但是最多也只能有一個。例:
復(fù)制代碼 代碼如下:

class SomeType{
static SomeType(){}
}

jit編譯器在編譯一個方法時,會查看代碼引用哪些類型。任何類型定義了類型構(gòu)造器,jit編譯器都會檢查當(dāng)前AppDomain是否已經(jīng)執(zhí)行了這個類型構(gòu)造器,如果沒有就執(zhí)行,已經(jīng)執(zhí)行了就直接返回,不再次執(zhí)行。在多線程的環(huán)境下,可能同一時間有多個執(zhí)行相同的方法,CLR希望每一個AppDomain中一個類型構(gòu)造器只執(zhí)行一次,在調(diào)用類型構(gòu)造器時,使用互斥線程同步鎖,解決這個問題。
類型構(gòu)造器中只能訪問類型的靜態(tài)字段,一般只是初始化這些字段。
代碼內(nèi)聯(lián)初始化字段:

復(fù)制代碼 代碼如下:

class SomeType
{
Static int x = 5;
}


等價于

復(fù)制代碼 代碼如下:

class SomeType
{
Static int x;
Static SomeType()
{
x = 5;
}
}

還有:
復(fù)制代碼 代碼如下:

class SomeType
{
Static int x = 3;
Static SomeType()
{
x = 5;
}
}

等價于
復(fù)制代碼 代碼如下:

class SomeType
{
Static int x;
Static SomeType()
{
x = 3;
x = 5;
}
}

雖然c#不允許值類型為它的實(shí)例化字段使用內(nèi)聯(lián)初始化語法,但是靜態(tài)字段可以的,以上把class改成struct一樣可以運(yùn)行,

主要原因是:值類型可以定義無參類型構(gòu)造器,但是不可以定義無參類型實(shí)例構(gòu)造器。

相關(guān)文章

最新評論