问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceapje.frameWork{publicsealedclasssingleton<T>whereT:new(){privatestaticTinstance=newT();privatestaticobjectlockHelper=newobject();//构造函数privatesingleton(){}//获取实例publicstaticTgetInstance(){if(instance==null){lock(lockHelper){if(instance==null){instance=newT();}}}returninstance;}//设置实例publicvoidsetInstance(Tvalue){instance=value;}}}代码从DZNT!找回来学习的。为什么红色字部分,要每次初始化呢?我的理解:是不是每次Instance都重新初始化对象呢?那不是浪费吗?
解决方案
解决方案二:
msdnsearchstatic
解决方案三:
引用1楼的回复:
msdnsearchstatic
我知道STATIC啥意思啊
解决方案四:
只在调用类型构造器调用时初始化,而类型构造器在clr中会确保只调用一次
解决方案五:
这样做是为了防止多线程调用造成的同步问题。本身singleton就有懒惰加载和贪婪加载两种实现策略。
解决方案六:
模糊的记得以前不小心用过单例模式,就是只声明一次实例的意思。。
解决方案七:
引用2楼的回复:
引用1楼的回复:msdnsearchstatic我知道STATIC啥意思啊
知道啥意思,就不会有疑问
时间: 2024-10-04 00:06:23