静态构造的学习

类的静态构造函数,也就是对静态字段初始化用的,和实例构造函数的区别就是,这个构造函数你无法调用,而是由CLR调用的,实例构造函数new的时候调用。

如果一个列没有显示的实例的构造函数,那么在编译后会加上一个默认无参构造函数,要不然那些实例字段在哪初始化啊。

但是对于静态构造函数来说,就CLR就不太一样了。首先它得保证他只能被调用一次,也有线程安全的问题。不过这个都被很好的解决了,就知道在静态构造里是线程安全的就行了,所以也有很多人在里面特别适合放singleton。

静态构造不写和显示写出有什么差异

不写出来,JIT在对IL代码进行编译的时候会有一个beforefieldint标记,就是由CLR决定什么时候调用静态构造函数,这个时间很难具体的掌握

显示写出,这个调用刚好是在发生在创建一个实例对象,或者刚好在访问类的一个非继承的字段字段和成员之前。时间相对精确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值