欢迎访问 生活随笔!

生活随笔

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

asp.net

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

发布时间:2025/7/25 asp.net 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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):类型构造器的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。