从类中访问C#Singleton而不将其传递给类

时间:2013-04-02 22:36:10

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

这就是我所说的。

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中检索单例样式对象。

1 个答案:

答案 0 :(得分:5)

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

虽然静态字段的值不同,但有几种情况。

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