/// <summary> /// 一意なインスタンスを取得する。 /// </summary> /// <returns></returns> public static UseSingleton GetInstance() { lock (lockObj) { if (instance == null) { instance = new UseSingleton(); } return(instance); } }
private void ExampleSingleton() { var notUse1 = new NotUseSingleton(); Console.WriteLine($"{typeof(NotUseSingleton)}のインスタンスID: {notUse1.GetInstanceID()}"); // 同じインスタンスのIDを参照しているつもり。 var notUse2 = new NotUseSingleton(); Console.WriteLine($"{typeof(NotUseSingleton)}のインスタンスID: {notUse2.GetInstanceID()}"); Console.WriteLine($"Same instance?: {notUse1 == notUse2}"); var use1 = UseSingleton.GetInstance(); Console.WriteLine($"{typeof(UseSingleton)}のインスタンスID: {use1.GetInstanceID()}"); // UseSingletonに一意が保障されたインスタンスが存在するのでそれを取得 var use2 = UseSingleton.GetInstance(); Console.WriteLine($"{typeof(UseSingleton)}のインスタンスID: {use2.GetInstanceID()}"); Console.WriteLine($"Same instance?: {use1 == use2}"); }