0

オブジェクトの「同じ」インスタンスのみを返すクラスをC#で作成するにはどうすればよいですか?これは事実上シングルトンですか、それとも異なりますか?これは、EffectiveJava2ndadditionという本で言及されています。

私はC#4.0を使用しています(テクノロジーの障壁はありません)。

4

3 に答える 3

4

はい、これはシングルトンパターンです。ここで、私たち自身のJon SkeetのC#実装に基づいた優れたディスカッションを見つけることができます

于 2012-05-11T13:42:22.890 に答える
1

シングルトンオブジェクトの作成に費用がかかるが、アプリケーションを実行するたびに使用されるわけではない場合は、レイジーの使用を検討してください。

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 に答える