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类。