源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c# 类型构造器

  • 时间:2021-02-28 18:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c# 类型构造器
主要作用是:设置类型中静态字段的初始化。类型构造器不一定要在类中定义,但是最多也只能有一个。例:
[u]复制代码[/u] 代码如下:
class SomeType{ static SomeType(){} }
jit编译器在编译一个方法时,会查看代码引用哪些类型。任何类型定义了类型构造器,jit编译器都会检查当前AppDomain是否已经执行了这个类型构造器,如果没有就执行,已经执行了就直接返回,不再次执行。在多线程的环境下,可能同一时间有多个执行相同的方法,CLR希望每一个AppDomain中一个类型构造器只执行一次,在调用类型构造器时,使用互斥线程同步锁,解决这个问题。 类型构造器中只能访问类型的静态字段,一般只是初始化这些字段。 代码内联初始化字段:
[u]复制代码[/u] 代码如下:
class SomeType { Static int x = 5; }
等价于
[u]复制代码[/u] 代码如下:
class SomeType { Static int x; Static SomeType() { x = 5; } }
还有:
[u]复制代码[/u] 代码如下:
class SomeType { Static int x = 3; Static SomeType() { x = 5; } }
等价于
[u]复制代码[/u] 代码如下:
class SomeType { Static int x; Static SomeType() { x = 3; x = 5; } }
虽然c#不允许值类型为它的实例化字段使用内联初始化语法,但是静态字段可以的,以上把class改成struct一样可以运行, 主要原因是:值类型可以定义无参类型构造器,但是不可以定义无参类型实例构造器。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部