singleton

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/

posted @ 2004-12-30 11:59  一根神棍研古今  阅读(470)  评论(0编辑  收藏  举报
Web Counter