C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のシングルトンクラスとは?実装方法とサンプルコードを解説

シングルトンクラスとは

シングルトンパターン(Singleton Pattern)は、クラスのインスタンスがアプリケーション内で1つだけ存在することを保証するデザインパターンです。データの割り当てやインスタンス化が一度だけ行われるため、メモリの無駄な消費を抑えることができます。

シングルトンクラスには通常のメソッドを持たせることが可能で、その唯一のインスタンスを通じてメソッドを呼び出します。

複数インスタンスの生成を防ぐ方法

クラスの複数のインスタンスが作成されるのを防ぐには、プライベートコンストラクタ(private constructor)を使用します。コンストラクタをprivateにすることで、外部からnewキーワードによるインスタンス生成ができなくなります。

public class Singleton {
    static Singleton b = null;
    private Singleton() {
    }
}

C#でのシングルトンクラスの実装例

以下は、C#でシングルトンクラスを実装し、そのメソッドを呼び出す完全なサンプルコードです。

using System;

class Singleton {
    public static readonly Singleton _obj = new Singleton();

    public void Display() {
        Console.WriteLine(true);
    }
    Singleton() {}
}

class Demo {
    public static void Main() {
        Singleton._obj.Display();
    }
}

出力結果:

True

コードのポイント

  • static readonlyフィールドにより、インスタンスはクラスの初期化時に1度だけ生成されます。
  • コンストラクタがprivateのため、外部からnew Singleton()と記述するとコンパイルエラーになります。
  • 静的フィールド_objを経由して、唯一のインスタンスにアクセスします。

補足:スレッドセーフ性について

上記のようなstatic readonlyを使った実装は、.NETランタイムによって型の初期化が保証されるため、シンプルでありながらスレッドセーフです。マルチスレッド環境で利用する場合は、この方式かLazy<T>クラスを使用するのが推奨されます。

  1. Androidでシングルトンクラスを使う方法をサンプルコード付きで解説

    シングルトンデザインパターンとは?実装例に入る前に、まず「シングルトンデザインパターン」についておさらいしておきましょう。シングルトン(Singleton)とは、あるクラスのインスタンス生成をアプリケーション全体で1つだけに制限するデザインパターンです。主な用途としては、同時実行(並行処理)の制御や、アプリケーションがデータストアへアクセスするための中心的なアクセスポイントの作成などが挙げられます。この記事では、Androidアプリでシングルトンクラスを実際に使う方法を、ステップごとのサンプルコードとともに解説します。手順1:新規プロジェクトを作成するAndroid StudioでFile →

  2. C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説

    C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System