繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM