当前位置: 首页 > 编程语言 > C#

这个Singleton实现是正确的还是线程安全的?分享

时间:2023-04-10 23:38:10 C#

这个单例实现是正确的还是线程安全的?这个单例实现是正确的还是线程安全的?classClass{publicstaticreadonly类实例;静态类(){实例=新类();}privateClass(){}}从技术上讲,您的版本应该可以工作。但是,我不建议在Singleton类中公开公共字段,更喜欢使用Property(仅getter)。如果您以后需要进行更改,这将帮助您的API面向未来。我还建议密封任何单例实现,因为子类化单例类几乎总是一个坏主意并且有问题。如果您的目标是.NET3.5或更早版本,我个人在C#中使用以下内容:publicsealedclassSingleton{staticreadonlySingletoninstance=newSingleton();publicstaticSingletonInstance{get{返回实例;}}staticSingleton(){}privateSingleton(){}}如果你使用的是.NET4,你可以使用Lazy使它更容易:publicsealedclassSingleton{privatestaticreadonlyLazyinstance=newLazy(()=>新单例());privateSingleton(){}publicstaticSingletonInstance{get{returninstance.Value;}}}.NET4版本还具有完全惰性的优势——即使您的Singleton类可以在其他静态方法之前访问“Instance”属性。您还可以使用私有嵌套类创建一个完全惰性的.NET3.5版本。JonSkeet在他的博客上证明了这一点。是的。我还将使课程“密封”以避免将来出现任何混淆。关于如何做到这一点的一个很好的讨论是在这里:http://www.yoda.arachsys.com/csharp/singleton.html你应该在变量声明中进行初始化:以上是C#学习教程:这个Singleton实现是正确还是线程安全的?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——publicstaticreadonlyClassInstance=newClass();本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: