今天在博客园看一篇单件模式的文章,有个小疑问,特来向大家请教。
先贴出该文章地址 http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
有疑问的代码:public sealed class Singleton
{
static readonly Singleton instance=new Singleton();
static Singleton()
{
}
Singleton()
{
} public static Singleton Instance
{
get
{
return instance;
}
}
}
我的疑问:为什么要写一个static的构造器呢?有一个构造器不就够了么?
先贴出该文章地址 http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
有疑问的代码:public sealed class Singleton
{
static readonly Singleton instance=new Singleton();
static Singleton()
{
}
Singleton()
{
} public static Singleton Instance
{
get
{
return instance;
}
}
}
我的疑问:为什么要写一个static的构造器呢?有一个构造器不就够了么?
要么你全部不用static,要么都用。
1.外界不能通过构造函数去new一个对象,构造函数是私有的。
2.类必须向外界提供一个访问器去获取对象。
3.任何时候保证只有一个对象的存在。
public sealed class Singleton
{
static readonly Singleton instance=null;
static Singleton()
{
instance=new Singleton();
//这里还可以写其他的初始化的处理,如果有的话,
}
Singleton()
{
} public static Singleton Instance
{
get
{
return instance;
}
}
}
我这样改之后,不同的地方是,如果一直都没有使用单件,则instance一直都不会被创建,保持null,
http://blog.csdn.net/cloudhsu/article/details/6533678
这也是一种单例的用法,可参考看看
{
static Singleton instance=null;
static object LockObject=new object();
Singleton()
{
} public static Singleton Instance
{
get
{
lock(LockObject)
{
if(instance==null)
{
instance=new Singleton();
}
}
return instance;
}
}
}
static Singleton()
{
instance = new Singleton();
}