我想知道是否有可能让静态类实例化另一个类,以便全局保存对它的引用。我有一个数据存储,它由一个内存中的对象组成,并希望从不同的位置访问它。数据需要持久更改应用程序,因此需要在窗口或UI范围之外实例化。
我希望使用静态类来执行此操作将是正确的方法。这是单身人士吗?我正在寻找什么?
答案 0 :(得分:9)
处理此问题的正常方法是使用Singleton Pattern。这基本上创建了一个非静态类的单个实例,可以静态访问(通常使用ClassName.Instance
属性)。
这是creating a singleton in C#上的精彩页面。
答案 1 :(得分:1)
这是一个简单的例子....您只需使用 Config.Instance.Value
即可获得该属性public class Config
{
private Config()
{
this.Value = "foobarr";
}
private static object _syncLock = new object();
private static Config _instance;
public static Config Instance
{
get
{
lock (_syncLock)
{
if (_instance == null)
_instance = new Config();
return _instance;
}
}
}
public string Value { get; private set; }
}
答案 2 :(得分:1)
静态类可以像创建任何其他类一样创建和引用任何对象。它不是一个单身人士,但你会得到类似的最终结果。静态类在第一次被引用时被“构造”,所以如果你需要在窗口或UI之前发生某些事情,你仍然需要处理它。
实际的单身人士是否更好,我不知道。有很多人说单身人士和静态课程很糟糕,主要是因为他们使代码变得更加僵硬。它在某种程度上几乎是一个全局变量。