有些不明白这个“泛型单例模式”的代码!请指教

chao8676 2012-04-15 02:20:36
using System;
using System.Collections.Generic;
using System.Text;

namespace apje.frameWork
{
public sealed class singleton<T> where T : new()
{
private static T instance = new T();

private static object lockHelper = new object();


// 构造函数
private singleton()
{ }

// 获取实例
public static T getInstance()
{
if (instance == null)
{
lock (lockHelper)
{
if (instance == null)
{
instance = new T();
}
}
}

return instance;
}

// 设置实例
public void setInstance(T value)
{
instance = value;
}

}
}

代码从DZ NT!找回来学习的。

为什么红色字部分,要每次初始化呢?

我的理解:是不是每次Instance都重新初始化对象呢?那不是浪费吗?
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

msdn search static


我知道STATIC啥意思啊
[/Quote]
知道啥意思,就不会有疑问
orochiheart 2012-04-15
  • 打赏
  • 举报
回复
模糊的记得以前不小心用过单例模式,就是只声明一次实例的意思。。
threenewbee 2012-04-15
  • 打赏
  • 举报
回复
这样做是为了防止多线程调用造成的同步问题。

本身singleton就有懒惰加载和贪婪加载两种实现策略。
zh6335901 2012-04-15
  • 打赏
  • 举报
回复
只在调用类型构造器调用时初始化,而类型构造器在clr中会确保只调用一次
chao8676 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

msdn search static
[/Quote]

我知道STATIC啥意思啊
真相重于对错 2012-04-15
  • 打赏
  • 举报
回复
msdn search static

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧