關於靜態建構函式執行時機

2021-06-06 17:01:34 字數 1392 閱讀 3261

先看**:

1.包含靜態欄位的呼叫

class program

class staticclass}}

結果如下:

新增靜態建構函式:

class program

class staticclass

static staticclass()

}

結果如下:

2.去掉靜態字段呼叫

static void main(string args)

class staticclass

}

結果如下:

新增靜態建構函式:

class program

class staticclass

static staticclass()

}

結果如下:

顯式定義靜態建構函式時的il:

未顯式定義靜態建構函式的il:

未顯式定義靜態建構函式時,il中多了乙個beforefieldinit標誌,此標誌使得執行庫能夠在任何時候執行型別建構函式方法,只要該方法(靜態建構函式)在第一次訪問該型別的靜態字段(而不是方法)之前執行即可。換句話說,beforefieldinit 為執行庫提供了乙個執行主動優化的許可。如果沒有 beforefieldinit,執行庫就必須在某個精確時間(呼叫之前)執行型別建構函式,即,恰好在第一次訪問該型別的靜態或例項欄位和方法之前。當存在顯式型別建構函式時,編譯器不會用 beforefieldinit 標記該型別,精確的計時限制會導致 fxcop 所暗示的效能下降。

轉貼請註明作者和出處。

runtime 執行時機制

首先,第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?這個問題我就不跟大家繞彎子了,直接告訴大家,runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了runtime的c語言 r...

runtime 執行時機制

必備常識 1.ivar 成員變數 2.method 成員方法相關應用 1.nscoding 歸檔和解檔,利用runtime遍歷模型物件的所有屬性 2.字典 模型 利用runtime遍歷模型物件的所有屬性,根據屬性名從字典中取出對應的值,設定到模型的屬性上 3.kvo 利用runtime動態產生乙個類...

runtime 執行時機制

runtime 執行時機制 一 runtime是什麼 1 runtime是乙個全動態語言,是基於c語言的庫,裡面包含了很多底層的c語言函式。2 平時編寫的oc 在程式執行過程中,其實最終都是轉成了runtime的c語言 runtime算是oc方法的底層實現,換句話說oc的實現也就是runtime的底...