Microsoft.Net框架程序设计学习笔记(11):类型构造器
生活随笔
收集整理的這篇文章主要介紹了
Microsoft.Net框架程序设计学习笔记(11):类型构造器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
除實例構造器外,CLR還支持類型構造器(又稱靜態構造器、類構造器、類型初始化器)。類型構造器用于設置一個類型的初始狀態。默認情況下,一個類型中沒有定義類型構造器,只能手動定義。且類型構造器不能有任何參數。
示例代碼如下:
class SomeRefType{
//當SomeRefType第一次被訪問時執行
static SomeRefType()
{}
}
struct SomeValType
{
//當SomeValType第一次被訪問時執行
static SomeValType()
{}
}
類型構造器不允許添加任何訪問限制符,它的訪問限制被自動設為私有方式。類型構造器的調用由CLR負責,CLR會在如下時間之一調用類型構造器。
類型構造器一旦被執行,它在整個應用程序域的生命周期內都不會再次被調用 。
如果一個類型構造器拋出一個未處理異常,CLR將認為該類型不可用。試圖訪問其中的任何字段或方法都將拋出TypeInitializationException異常。
類型構造器的代碼只能訪問類型的靜態字段,且通常它的目的就是初始化這些靜態字段。
以下代碼:
class SomeType{
static Int32 x = 5;
} 當這段代碼被編譯時,編譯器會為SomeType自動產生一個類型構造器,所以這段代碼等價于如下代碼: class SomeType
{
static Int32 x;
static SomeType() { x= 5; }
} 還有一點要注意,類型構造器不應該調用其基類的類型構造器。這是因為基類中的靜態字段沒有被派生類型所繼承。(這可能與大家的“認識”相反,因為很多代碼或在派生類型內部引用了基類型的靜態字段,或通過派生類型引用了基類的靜態字段,這不是繼承又是啥呢?事實上這確實不是繼承,而是編譯時靜態綁定。另外,其他靜態成員,如靜態方法、靜態屬性等,也不會被派生類所繼承,同樣是編譯時靜態綁定。)
轉載于:https://www.cnblogs.com/free722/archive/2011/03/27/1996808.html
總結
以上是生活随笔為你收集整理的Microsoft.Net框架程序设计学习笔记(11):类型构造器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery CheckBox全选
- 下一篇: 微软System Center 2012