Singleton完全に理解した

ソースコード

Program.cs

using System;

namespace SingletonSample
{
  class Program
  {
    static void Main(string[] args)
    {
      Singleton sgl1 = Singleton.GetInstance();
      // のび太
      Console.WriteLine(sgl1.GetData());

      Singleton sgl2 = Singleton.GetInstance();
      // のび太
      Console.WriteLine(sgl2.GetData());

      sgl1.SetData("スネ夫");
      // スネ夫
      Console.WriteLine(sgl1.GetData());
      // スネ夫
      Console.WriteLine(sgl2.GetData());

      sgl2.SetData("ジャイ子");
      // ジャイ子
      Console.WriteLine(sgl1.GetData());
      // ジャイ子
      Console.WriteLine(sgl2.GetData());

      Singleton sgl3 = Singleton.GetInstance();
      // ジャイ子
      Console.WriteLine(sgl3.GetData());

      Console.ReadLine();
    }
  }
}

Singleton.cs

using System;

namespace SingletonSample
{
  internal class Singleton
  {
    private static Singleton singleton = new Singleton();
    private string data;

    private Singleton()
    {
      Console.WriteLine("インスタンスを生成しました");
      data = "のび太";
    }

    internal static Singleton GetInstance()
    {
      return singleton;
    }

    internal void SetData(string v)
    {
      data = v;
    }

    internal string GetData()
    {
      return data;
    }
  }
}

出力結果

f:id:yjkym:20190716223233p:plain