ホームに戻る
出典 :
C# で シングルトンパターン #C# - Qiita C#シングルトンの完全ガイド!初心者向けの7つのステップ – Japanシーモア 本当の継承シングルトンを見せてやんよ【C#】 #C# - Qiita
関連 :
シングルトン virtual・abstract・sealed 参照渡し
目次 :

C#でのシングルトン

デザインパターンのひとつである「シングルトン」を、C#で実装する場合の例を以下に挙げる。
// シングルトンクラス public sealed class SingletonClass { // 唯一の SingletonClass インスタンス private static SingletonClass _singleInstance = new SingletonClass(); // インスタンスを取得するためのプロパティ public static SingletonClass Instance { get { return _singleInstance; } } // コンストラクタ private SingletonClass() { // (生成時に行う処理を記述する) } }
要点は以下のとおり。 (C#3.0以降)自動プロパティを用いた場合は更に簡略化できる。
// シングルトンクラス public sealed class SingletonClass { // 唯一の SingletonClass インスタンス(自動プロパティ) public static SingletonClass Instance { get; } = new SingletonClass(); // コンストラクタ private SingletonClass() { // (生成時に行う処理を記述する) } }

C++との差異

C++の場合はコピー・ムーブの各コンストラクタおよび演算子を明示的に「定義なし」とする必要があったが、
C#ではクラスオブジェクトは参照渡しで、ムーブの概念が無いことからいずれも記述は不要である。
(C#にもコピーコンストラクタの概念自体は存在するが、ここでは割愛する。)
その他はC++と同様である。

汎用シングルトンクラス

シングルトン基底クラスを継承することで、上記のようなシングルトン特有のボイラープレートを省略することができる。
出典元を参照。