gpt4 book ai didi

c# - 单例的惰性初始化

转载 作者:行者123 更新时间:2023-11-30 13:18:19 25 4
gpt4 key购买 nike

阅读时Jon Skeet's article on singletons in C#我开始想知道为什么我们首先需要延迟初始化。文章中的第四种方法似乎已经足够了,这里供引用:

public sealed class Singleton
{
static readonly Singleton instance=new Singleton();

// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton()
{
}

Singleton()
{
}

public static Singleton Instance
{
get
{
return instance;
}
}
}

在极少数情况下,您在单例上有其他静态方法,延迟初始化可能会有好处,但这不是一个好的设计。

那么人们能告诉我为什么延迟初始化如此热门吗?

最佳答案

在那些你正在初始化的东西可能根本不需要的情况下,而且初始化很昂贵,(在 CPU 周期或资源方面),然后实现惰性初始化程序可以节省对象的情况下的成本不需要。

如果对象总是需要的,或者初始化相对便宜,那么惰性初始化器就没有额外的好处。

无论如何,不​​正确地实现惰性初始化器会使单例成为非线程安全的,因此如果您需要这种模式,请小心正确地进行。 Jon 的文章有一个模式(我认为这是最后一个)解决了这个问题。

关于c# - 单例的惰性初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com