lok*_*oki 0 .net c# singleton design-patterns
我有一些代码如下所示.我想这是Singleton模式.为什么我需要一个静态构造函数.这也有什么好处?感谢您的回复 ...
public sealed class Myclass
{
static Myclass()
{
Myclass.Application = new Myclass();
}
protected Myclass()
{
}
static Myclass _application;
public static Myclass Application
{
get { return Myclass._application; }
protected set { Myclass._application = value; }
}
string _name;
public string Name
{
get { return _name}
protected set { _name= value; }
}
}
Run Code Online (Sandbox Code Playgroud)
首先,这个类对于拥有受保护的构造函数有点奇怪.鉴于它是密封的,这不是一个致命的缺陷,但它显然是奇怪的.
有一个定时的电势差的代码和几乎相当于用一个静态变量初始化之间:
static readonly Myclass _application = new Myclass();
Run Code Online (Sandbox Code Playgroud)
(当然,在这种情况下不需要安装者.)
但是,您无法使用自动实现的属性执行此操作.
在某种形式下使用静态初始化可以获得"自由"线程安全性 - 您不需要进行任何锁定以获得延迟初始化.
您可能会发现我的单例实现文章对于更多选项感兴趣.