2016-12-21 4 views
-2

スタティックメンバーオブジェクトとシングルトンパターンの間に相違点がありますか?私はしばしばC#で以下のコードを使用しますが、シングルトンが優先されるユースケースはありますか?c#静的メンバーまたは静的コンストラクタとシングルトンの違い

public class MyStaticObject 
    { 
     static MyStaticObject _object =new MyStaticObject(); 

     // OR with static constructor 
     //static MyStaticObject _object; 
     //static MyStaticObject() 
     //{ 
     // _object = new MyStaticObject(); 
     // // additional static construction logic... 
     // // ... 
     //} 
    } 

注: Difference between static class and singleton pattern?

と静的クラスを見て他の質問:これは同じ問題ではありません。私のプログラムでは、classは静的ではなく、シングルトンオブジェクトです。だから私はリンクの質問に列挙されている継承の利点をすべて持っていますが、私は構築のためにシングルトンパターンを使用していません。

+0

シングルトンパターンは通常、一度設定されたリードオンリーインスタンスと組み合わされますが、変更することはできません。静的メンバーを使用すると、インスタンスを変更できます。しかし、両方とも静的なコンストラクタ呼び出しに行くので、コードに違いはありません。あなたはシングルトンをまったく使っていません。 – HimBromBeere

+0

HImBromBeere:こんにちは、はい私はシングルトンを使用していないことを認識しています。この場合、スタティックコンストラクタまたはスタティックメンバを使用しています。シングルトンを使用すると、通常はインスタンスがnullかどうかを確認し、 nullの場合しかし、私は静的なコンストラクタまたは静的メンバーで同じ結果を達成すると思います。だから私たちは本当にシングルトンパターンが必要ですか? – shev72

+0

ポイントは、すでに述べたように、静的メンバーを必要に応じて頻繁に変更することができます。しかし、シングルトンは通常、あなたのアプリケーションの全ライフタイム中に同じインスタンスを参照するので、そのリファレンスを変更することはできません( 'readonly'のように)。 – HimBromBeere

答えて

0

シングルトンパターンでは、指定されたタイプのインスタンスが1つしかないと言われています。あなたはさまざまな方法でそれを達成することができます。あなたは静的なクラス/メンバーか、IoCコンテナを使用して(私の考え方よりも良い)、あるいは別の方法でそれを行うことができます。

関連する問題