读书人

关于单例模式的一些疑点

发布时间: 2013-03-19 17:22:05 作者: rapoo

关于单例模式的一些疑问
看到一管关于单例模式的文章,感觉写的相当不错,链接:http://www.cnblogs.com/xun126/archive/2011/03/09/1970807.html

其最后一段“饿汉模式”的代码如下:


public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();

private Singleton()
{
}

public static Singleton GetInstance()
{
return instance;
}
}


原文中提到:
“readonly关键字可以跟static一起使用,用于指定该常量是类别级的,它的初始化交由静态构造函数实现,并可以在运行时编译。在这种模式下,无需自己解决线程安全性问题,CLR会给我们解决。由此可以看到这个类被加载时,会自动实例化这个类,而不用在第一次调用GetInstance()后才实例化出唯一的单例对象。”

现在的问题是如果去掉readonly单例模式还能不能正常使用?如果能正常使用,跟加readonly的模式有何区别? C# readonly 单例
[解决办法]
lz这个也算单例,把readonly去掉不影响使用
加readonly是防止你在自身类(即Singleton )内部函数里修改它
[解决办法]
引用:
引用:这个是单例模式,有没有readonly无所谓。
另外二楼说的线程安全问题实际上是不存在的,因为静态构造器由CLR在第一次加载该类型时调用,CLR能够保证这个操作是线程安全的。
你好,可不可以提供一些关于CLR能够保证此操作线程安全的更加详细的资料呢,想深入了解一下,感激不尽


CLR via C#详细描述了这个问题,而且相比使用DCL(双重检查锁),贪婪加载(你所谓的饿汉模式)的Singleton更安全。

读书人网 >C#

热点推荐