singleton

博客介绍了ExplicitConstructor中静态成员在构造函数引用被处理成singleton的原因,是Release版编译器进行了代码优化。还对比了Release与Debug版本的不同,如DEBUG模式下JIT不做优化,要提供详细错误信息,Release版不支持Debug类等。

ExplicitConstructor中,静态成员在构造函数引用,它被处理成了 singleton。实际上,并不是Debug在初始化时做了手脚,而是发布成为Release时,编译器做了一些手脚,进行了代码优化。
Relase版本与Debug版有些不同之处:
1、在DEBUG模式下发布的版本,JIT不会对它做任何的优化,因为在异常处理,DEBUG模式下发布的版本要能够清晰的告诉调试器错误在源码中的第几行,错误是什么等等十分详细的信息。
相信你也看出来了,如果是经过优化后的代码,在保留原始对应的代码信息的处理上会十分麻烦。
2、Release版本中不支持Debug类.

如果把类ImplicitConstructor修改为如下代码
class ImplicitConstructor
 {
  private static string message = "Hello World";
  static ExplicitConstructor()
  {
  }

  public static string Message
  {
      get { return message; }
  } 

它就会等效于上面的ExplicitConstructor类。

参考:http://www.yoda.arachsys.com/csharp/

转载于:https://www.cnblogs.com/William_Fire/articles/84195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值