作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有以下 C# 单例模式,有什么改进方法吗?
public class Singleton<T> where T : class, new()
{
private static object _syncobj = new object();
private static volatile T _instance = null;
public static T Instance
{
get
{
if (_instance == null)
{
lock (_syncobj)
{
if (_instance == null)
{
_instance = new T();
}
}
}
return _instance;
}
}
public Singleton()
{ }
}
首选用法示例:
class Foo : Singleton<Foo>
{
}
相关:
最佳答案
根据 Jon Skeet 在 Implementing the Singleton Pattern in C# 中的说法您发布的代码实际上被认为是错误代码,因为根据 ECMA CLI 标准检查时它似乎已损坏。
还要注意:每次用新类型的 T 实例化对象时,它都会成为另一个实例;它不会反射(reflect)在您的原始单例中。
关于c# - 什么是 C# 中好的线程安全单例通用模板模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/100081/
我是一名优秀的程序员,十分优秀!