日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Microsoft.Net框架程序设计学习笔记(11):类型构造器

發布時間:2025/7/25 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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):类型构造器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。