我想得到一个静态类的实例,但是如果没有在非静态类上实现单例包装,我似乎无法做到这一点 - 这是可能的,还是我错过了什么?
public class MyInstanceTester
{
public MyInstanceTester()
{
//this is how i get a reference to a singleton now
MyClass instance1 = MyClass.Instance();
//this is what is would like to do (if only the compiler would let me)
MyStaticClass instance2 = MyStaticClass.Instance();
}
}
public class MyClass
{
private static MyClass _myInstance;
static MyClass()
{
_myInstance = new MyClass();
}
public static MyClass Instance()
{
return _myInstance;
}
}
public static class MyStaticClass
{
public static MyStaticClass Instance
{
get
{
return this;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*sik 13
没有静态类的实例.单例模式只是将类的同一实例返回给重复的请求.
你可能会感到困惑:
private static MyClass _myInstance;
Run Code Online (Sandbox Code Playgroud)
这仅仅意味着在具有_myInstance作为成员的类型实例化的所有对象中将存在该特定对象的单个实例.
几点说明:
this关键字在静态成员中无效this永远不会有效进一步阅读: Jon Skeet非常出色地介绍了在C#In Depth中实现Singletons.我建议阅读和研究这篇文章,直到你理解它为止.这是非常好的.
| 归档时间: |
|
| 查看次数: |
33856 次 |
| 最近记录: |