[英]Referencing an instantiated object in a static class (c#)
我想知道是否有可能让静态类实例化另一个类,以便全局保存对它的引用。 我有一个数据存储,它由一个内存中的对象组成,并希望从不同的位置访问它。 数据需要持久更改应用程序,因此需要在窗口或UI范围之外实例化。
我希望使用静态类来执行此操作将是正确的方法。 这是单身人士吗? 我正在寻找什么?
处理此问题的常规方法是使用Singleton模式 。 这基本上创建了一个非静态类的单个实例,可以静态访问(通常使用ClassName.Instance
属性)。
这是一个关于在C#中创建单例的好页面。
这是一个简单的例子....你可以通过使用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; }
}
静态类可以像任何其他类一样创建和引用任何对象。 它不是一个单身人士,但你会得到类似的最终结果。 静态类在第一次被引用时被“构造”,所以如果你需要在窗口或UI之前发生某些事情,你仍然需要处理它。
我不知道,实际单身是否更好。 有很多人说单身人士和静态课程很糟糕,主要是因为他们使代码变得更加僵硬。 它在某种程度上几乎是一个全局变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.