オブジェクトの「同じ」インスタンスだけを返すC#クラスを書くにはどうすればよいですか?これは効果的にシングルトンですか?これは「Effective Java 2nd」の本で言及されています。常に同じインスタンスを返すクラス
私はC#4.0(技術的障壁なし)を使用しています。
オブジェクトの「同じ」インスタンスだけを返すC#クラスを書くにはどうすればよいですか?これは効果的にシングルトンですか?これは「Effective Java 2nd」の本で言及されています。常に同じインスタンスを返すクラス
私はC#4.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;
}
}
}
}
http://www.yoda.arachsys.com/csharp/singleton.htmlの「Third Version」までスクロールします。 – jason
シングルトンオブジェクトを作成するのは高価ですが、アプリケーションを実行するたびに使用されない場合は、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; }
}
}
はい、これはSingletonパターンです:http://en.wikipedia.org/wiki/Singleton_pattern –
まあ最善の方法は、限り、それは静的に使用されていない場合だけ、静的クラスを持つことであるとどまることができるようシングルトンのパターンは、すでにそれについての多くの記事がありますhttp://stackoverflow.com/questions/3136008/is-this-singleton-implementation-correct-and-thread-safe – Tenerezza