c# - c#中的单例类
问题描述
我试图理解 C# 中的单例模式。我为此得到了 1 个结构,但我对实施有一些疑问。由于我是 C# 新手,我想知道它是如何工作的。
public class Class1
{
public static void Main(string[] args)
{
Singleton.Object.Func1();
}
}
public sealed class Singleton
{
private static readonly Singleton _obj = new Singleton();
static Singleton() { } // Make sure it's truly lazy
private Singleton() { } // Prevent instantiation outside
public static Singleton Object { get { return _obj; } }
public void Func1() { }
}
这种模式对于单例类是否正确?
这行“static Singleton() { } // 确保它真的是惰性的”的目的是什么
类如何识别在特定时间创建的仅 1 个实例
解决方案
你的模式是有效的。还有其他一些方法可以做到这一点,但这很好。
static Singleton() { }
我不认为这是必要的,但我可能是错的,它更类似于你需要在 C++ 中做的事情,以确保当你调用它时,它会抓住单例。
由于 _obj 是静态的,因此该类在任何给定时间只能有 1 个版本,这意味着每当您使用 .Object 调用它时,它都会返回这个有效副本。
推荐阅读
- python - 如何将熊猫数据框上的布尔列信息复制到另一个?
- c - Valgrind:将内存标记为只读
- gatling - Gatling:场景中的并发执行
- javascript - 如何解决 axios 中的 403 post 请求?
- google-cloud-platform - 如何将其他路由通告到现有 BGP 对等体?
- javascript - 如何在 JupyterLab 中使用 javascript 设置 python 变量
- docker - Docker - 80 以外的 nginx 端口映射不起作用
- angular - 表单内组件的模板驱动表单验证
- r - 在 macOS 上安装 data.table:带 M1 芯片的 Big Sur
- google-sheets - 获取动态范围的每个“部分”的小计