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

Gli*_*pse 1 .net c# singleton design-patterns visual-studio-2012

这就是我所说的.

public sealed class ObjectZ {
    static readonly ObjectZ _instance = new ObjectZ();
    private ObjectZ() {}
    public static ObjectZ Instance{
        get { return _instance; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想访问这个指针......

ObjectZ obj = ObjectZ.Instance;
Run Code Online (Sandbox Code Playgroud)

来自另一个类而没有将它传递给构造函数或方法并设置它.如果我从另一个类中执行此行,是否会获得相同的对象?

我已经习惯了Objective-C,你可以从一行中从UIApplicationDelegate中检索单例样式对象.

Jar*_*Par 5

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

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

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

  • AppDomains是一种运行时现象.应用程序可以从一个AppDomain开始,稍后再添加.可以看到这种情况的典型情况是在ASP.NET中,其中可能存在多个AppDomain,而第一个正在停顿并且启动了新的AppDomain. (2认同)