2014-09-03 68 views
2

任何人都可以解釋CLR如何處理靜態類嗎? CLR是否在內部創建一個用於處理靜態類的單例實例?如果沒有,爲什麼我們在C#中有一個靜態構造函數? (根據我的理解,我們只使用構造函數來實例化類)CLR如何處理靜態類?

回答

3

首先CLR中沒有靜態類。 CLR不知道靜態類的任何內容。 這是C#的功能。

靜態類編譯爲abstract以及sealed類。使它abstract阻止它的實例化,sealed阻止繼承。

靜態類並不特別,它只是一個簡單的類,所有成員都是靜態的。

是,CLR內部創建一個單例實例來處理靜態 類?

,它是抽象的,不能實例化。

如果不是爲什麼我們在C#中有一個靜態構造函數?

當第一次引用或實例化類型時,將調用靜態構造函數。它用於初始化類的靜態成員。

When is a static constructor called in C#?

1

構造函數在類型第一次被引用時被調用。它不一定是static類才具有static構造函數。

CLR不會創建static類的單例實例。儘管在初始化之後,它仍將static變量保留在內存中。

+0

「你想建立一個靜態構造函數?它並不一定是一個靜態構造函數。」 - (PC)今年十二月在電影院放映 – 2014-09-03 11:41:25