静态构造函数和单例类我有一个实现了单例设计模式的对象缓存。我对单例的方法总是在第一次访问属性时延迟加载静态实例。publicstaticWidget{get{if(instance==null)instance=newWidget();返回实例;但是,我知道这种方法不是线程安全的,并且对null的实例检查效率很低。在实例化静态实例的类上实现静态构造函数是否明智?据我所知,只要发生第一次静态属性访问,就会调用静态构造函数。这会起作用吗,它会比当前的延迟加载方法提供任何好处,或者更好地探索代理实现,或者使用锁来强制它是线程安全的吗?publicstaticWidget{get{if(instance==null){lock(padlock){if(instance==null)instance=newWidget();}}返回实例;我没有很多静态构造函数的经验,所以如果它是延迟加载属性的相同或更差的实现,甚至不用费心去实现这个想法。干杯,GaryJonSkeet有一篇关于单例的很棒的文章讨论了这个问题。我建议只使用JoeDuffy的惰性初始化器类,而不是滚动你自己的线程安全惰性初始化器并可能出错。http://www.bluebytesoftware.com/blog/PermaLink,guid,a2787ef6-ade6-4818-846a-2b2fd8bb752b.aspx以上就是C#学习教程的全部内容:静态构造函数和Singleton类,如果有用的话各位还有需要了解更多C#学习教程的,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
