http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html?page=5处的页面代码如下:
public final static Singleton INSTANCE = new Singleton();
自动使用延迟实例化。
我想验证是否
1)所有编译器都这样做,或者编译器可以自由地做任何想做的事情
2)由于c#没有“final”关键字,将其转换为c#的最佳方式是什么(同时它也应该自动使用lazy instantiation)
答案 0 :(得分:3)
是。保证静态初始化程序在您能够访问INSTANCE
之前运行。这种方法有两个不利因素:
C#的翻译为readonly
,而不是final
。
在我看来,这仍然比次要方法(同步/锁定,在静态getter中检查实例化)更受欢迎,因为它不需要任何同步代码,这更快,更容易阅读,同样容易使用