【问题标题】:Access C# Singleton from class without passing it into the class从类访问 C# Singleton 而不将其传递给类
【发布时间】:2013-04-02 22:36:10
【问题描述】:

这就是我要说的。

public sealed class ObjectZ {
    static readonly ObjectZ _instance = new ObjectZ();
    private ObjectZ() {}
    public static ObjectZ Instance{
        get { return _instance; }
    }
}

我想访问这个指针...

ObjectZ obj = ObjectZ.Instance;

来自另一个类而不将其传递给构造函数或方法并设置它。如果我从另一个班级做这行,我会得到相同的对象吗?

我习惯了 Objective-C,你可以在一行中从 UIApplicationDelegate 中检索一个单例样式的对象。

【问题讨论】:

    标签: c# .net design-patterns visual-studio-2012 singleton


    【解决方案1】:

    ObjectZ.Instance 值将返回相同的对象,无论您从代码中的哪个位置访问它。它由静态字段支持,静态字段本质上是全局的。

    在某些情况下,静态字段将具有不同的值。

    • 如果静态字段位于不同的AppDomain 实例中。通常,尽管应用程序只有一个 AppDomain
    • 如果静态字段包含在泛型类型中,则不同的实例化将具有不同的静态字段值

    【讨论】:

    • 我正在使用一个非常大的代码库(.Net 2.0 应用程序)。有没有一种简单的方法可以判断一个项目是否有多个 AppDomain?
    • AppDomains 是一种运行时现象。一个应用程序可以从一个 AppDomain 开始,然后再添加更多。在 ASP.NET 中可以看到这种情况的典型情况,其中可能存在多个 AppDomain,而第一个正在静默并启动一个新的。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多