从类中访问c#单例,而无需将其传递到类中

本文关键字:访问 单例 | 更新日期: 2023-09-27 18:07:13

这就是我要说的。

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#单例,而无需将其传递到类中

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

在一些情况下,静态字段会有不同的值。

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