c# 类型构造器

 更新时间:2012年10月29日 13:46:42   作者:  
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一样可以运行,

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

相关文章

  • 使用Topshelf框架操作Windows服务

    使用Topshelf框架操作Windows服务

    这篇文章介绍了使用Topshelf框架操作Windows服务的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现简单串口通信

    C#实现简单串口通信

    这篇文章主要为大家详细介绍了C#实现简单串口通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 用序列化实现List<T> 实例的深复制(推荐)

    用序列化实现List<T> 实例的深复制(推荐)

    下面小编就为大家带来一篇用序列化实现List<T> 实例的深复制(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • C#实现rabbitmq 延迟队列功能实例代码

    C#实现rabbitmq 延迟队列功能实例代码

    本篇文章主要介绍了C#实现rabbitmq 延迟队列功能实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • C#利用异步委托实现获取线程返回值

    C#利用异步委托实现获取线程返回值

    一般来说,异步委托主要用于解决 ThreadPool.QueueUserWorkItem 没有提供获取线程执行完成后的返回值问题,下面我们就来学习一下C#如何利用异步委托实现获取线程返回值吧
    2023-12-12
  • C#操作windows系统进程的方法

    C#操作windows系统进程的方法

    这篇文章介绍了C#操作windows系统进程的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#实现简单串口通信的示例详解

    C#实现简单串口通信的示例详解

    这篇文章主要为大家详细介绍了C#实现串口通信的相关知识,文中示例代码介绍的非常详细,具有一定的学习价值,感兴趣的小伙伴们可以跟随小编一起了解一下
    2023-10-10
  • C#实现银行家算法

    C#实现银行家算法

    这篇文章主要为大家详细介绍了C#实现银行家算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 利用C#实现分布式数据库查询

    利用C#实现分布式数据库查询

    利用C#实现分布式数据库查询...
    2007-03-03
  • C# 为String类型增加方法详解

    C# 为String类型增加方法详解

    下面小编就为大家带来一篇C# 为String类型增加方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07

最新评论