博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类型构造器
阅读量:6336 次
发布时间:2019-06-22

本文共 708 字,大约阅读时间需要 2 分钟。

CLR还支持类型构造器,也称为静态构造器。c#类型构造器可应用引用类型和值类型,永远没有参数。主要作用是:设置类型中静态字段的初始化。类型构造器不一定要在类中定义,但是最多也只能有一个。例:

class SomeType{

    static SomeType(){}
}

jit编译器在编译一个方法时,会查看代码引用哪些类型。任何类型定义了类型构造器,jit编译器都会检查当前AppDomain是否已经执行了这个类型构造器,如果没有就执行,已经执行了就直接返回,不再次执行。在多线程的环境下,可能同一时间有多个执行相同的方法,CLR希望每一个AppDomain中一个类型构造器只执行一次,在调用类型构造器时,使用互斥线程同步锁,解决这个问题。

类型构造器中只能访问类型的静态字段,一般只是初始化这些字段。
代码内联初始化字段:

class SomeType

{
    Static int x = 5;
}

等价于

class SomeType

{
    Static int x;
    Static SomeType()
    {
        x = 5;
    }
}

还有:

class SomeType

{
    Static int x = 3;
    Static SomeType()
    {
        x = 5;
    }
}
等价于
class SomeType
{
    Static int x;
    Static SomeType()
    {
        x = 3;
        x = 5;
    }
}
虽然c#不允许值类型为它的实例化字段使用内联初始化语法,但是静态字段可以的,以上把class改成struct一样可以运行,

主要原因是:值类型可以定义无参类型构造器,但是不可以定义无参类型实例构造器。

 

 

转载地址:http://lsxoa.baihongyu.com/

你可能感兴趣的文章
【转】Map/Reduce简介
查看>>
LOB
查看>>
js验证姓名和身份证号
查看>>
Solr空格默认值是AND还是OR
查看>>
(转)SQL SERVER 生成建表脚本
查看>>
对 Java Integer.valueOf() 的一些了解
查看>>
253:Cube painting
查看>>
2016 年 Java 工具和技术的调查:IDEA 已超过
查看>>
Robot Framework学习笔记(十)------Selenium2Library库
查看>>
openssl 自建CA签发证书 网站https的ssl通信
查看>>
18、jmeter对数据库进行压力测试
查看>>
19、Linux命令对服务器内存进行监控
查看>>
springmvc中的字典表
查看>>
iterator的使用和封个问题
查看>>
mac 安装php mongo扩展,无法使用的解决办法
查看>>
hdu 4627 The Unsolvable Problem
查看>>
hdu 4268 Alice and Bob(STL贪心)
查看>>
研究音频编解码要看什么书
查看>>
我的友情链接
查看>>
Could not find acceptable representation
查看>>