2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C# 複数のクラスに同一のインスタンスを提供する方法

Last updated at Posted at 2021-10-10

概要

通信するクラスや外部リソースを操作するクラスの場合、複数のクラスから操作するときに同一のインスタンスを取得する方が都合がいいことがあります。
その際の実装の例を記載しておきます。

コード

public class UniqueClass
{
    /// <summary>
    /// 共通のUniqueClassのインスタンス
    /// </summary>
    private static UniqueClass _instance = null;

    /// <summary>
    /// インスタンスを取得
    /// </summary>
    /// <returns></returns>
    public static UniqueClass GetInstance()
    {
        if (_instance == null)
        {
            _instance = new UniqueClass();
        }
        return _instance;
    }
        
    /// <summary>
    /// プライベートコンストラクタ
    /// </summary>
    private UniqueClass() { }
}

解説

上記UniqueClassのポイントは以下の3点です。

  1. staticな自分自身のインスタンス
  2. 外部にインスタンスを与えるGetInstance()メソッド
  3. プライベートコンストラクタ

1つずつ解説していきます。

1.staticな自分自身のインスタンス

これは複数のクラスに渡すためのユニークなインスタンスとなります。

2.外部にインスタンスを与えるGetInstance()メソッド

外部クラスからインスタンスを取得するための関数です。
1のインスタンスをリターンします。
※外部から呼び出す際は、

UniqueClass unique = UniqueClass.GetInstance();

のようにしてインスタンスを取得します。

3.プライベートコンストラクタ

privateで宣言されたコンストラクタです。
この宣言をすると外部からnewを使ったインスタンスを生成できなくなります。
間違ってnewを使用されたくないときに宣言してください。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?