1 using System;
2
3 class Singleton
4 {
5 private static Singleton _instance;
6
7 public static Singleton Instance()
8 {
9 if (_instance == null)
10 _instance = new Singleton();
11 return _instance;
12 }
13 protected Singleton(){}
14
15 // Just to prove only a single instance exists
16 private int x = 0;
17 public void SetX(int newVal) {x = newVal;}
18 public int GetX(){return x;}
19 }
20
21 /// <summary>
22 /// Summary description for Client.
23 /// </summary>
24 public class Client
25 {
26 public static int Main(string[] args)
27 {
28 int val;
29 // can't call new, because constructor is protected
30 Singleton FirstSingleton = Singleton.Instance();
31 Singleton SecondSingleton = Singleton.Instance();
32
33 // Now we have two variables, but both should refer to the same object
34 // Let's prove this, by setting a value using one variable, and
35 // (hopefully!) retrieving the same value using the second variable
36 FirstSingleton.SetX(4);
37 Console.WriteLine("Using first variable for singleton, set x to 4");
38
39 val = SecondSingleton.GetX();
40 Console.WriteLine("Using second variable for singleton, value retrieved = {0}", val);
41 return 0;
42 }
43 }