在性能受限的情况下,在 C# 中实现单例设计模式的最佳方法是什么?

问题描述 投票:0回答:2

请告诉我在 C# 中在性能受限的情况下实现单例设计模式的最佳方法是什么?

c# .net design-patterns singleton
2个回答
9
投票

转述自C# 深度: 在 C# 中实现单例模式有多种不同的方法,从 对于完全延迟加载、线程安全、简单且高性能的版本而言,不是线程安全的。

最佳版本 - 使用 .NET 4 的 Lazy 类型:

public sealed class Singleton
{
  private static readonly Lazy<Singleton> lazy =
      new Lazy<Singleton>(() => new Singleton());

  public static Singleton Instance { get { return lazy.Value; } }

  private Singleton()
  {
  }
}

简单且性能良好。如果需要的话,它还允许您使用 IsValueCreated 属性检查实例是否已创建。


2
投票
public class Singleton 
{
    static readonly Singleton _instance = new Singleton();

    static Singleton() { }

    private Singleton() { }

    static public Singleton Instance
    {
        get  { return _instance; }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.