引用静态类中的实例化对象(c#)

时间:2010-01-06 17:41:28

标签: c# static singleton

我想知道是否有可能让静态类实例化另一个类,以便全局保存对它的引用。我有一个数据存储,它由一个内存中的对象组成,并希望从不同的位置访问它。数据需要持久更改应用程序,因此需要在窗口或UI范围之外实例化。

我希望使用静态类来执行此操作将是正确的方法。这是单身人士吗?我正在寻找什么?

3 个答案:

答案 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之前发生某些事情,你仍然需要处理它。

实际的单身人士是否更好,我不知道。有很多人说单身人士和静态课程很糟糕,主要是因为他们使代码变得更加僵硬。它在某种程度上几乎是一个全局变量。