0

如何在 C# 中编写一个只返回对象的“相同”实例的类?这实际上是单身还是不同?这在《Effective Java 2nd addition》一书中提到。

我使用 C# 4.0(没有技术障碍)。

4

3 回答 3

4

是的,这是一个单例模式。您会在此处找到基于我们自己的 Jon Skeet 的 C# 实现的精彩讨论。

于 2012-05-11T13:42:22.890 回答
1

如果您的 Singleton 对象的创建成本很高,但不是每次应用程序运行时都使用它,请考虑使用 Lazy。

public sealed class LazySingleton
{
    private readonly static Lazy<LazySingleton> instance = 
        new Lazy<LazySingleton>(() => new LazySingleton() );

    private LazySingleton() { }

    public static LazySingleton Instance
    {
        get { return instance.Value; }
    }
}
于 2012-05-11T13:46:46.943 回答
0
using System;

namespace DesignPatterns
{
    public sealed class Singleton
    {
        private static volatile Singleton instance = null;

        private Singleton() { }

        public static Singleton Instance
        {
            get
            {
                if (instance == null)
                   Interlocked.CompareExchange(ref instance, new Singleton(), null);

                return instance;
            }
        }
    }
}
于 2012-05-11T13:44:08.257 回答