public static Multiton GetInstance(MultitonType type) { // Lazy init (not thread safe as written) // Recommend using Double Check Locking if needing thread safety if (!instances.TryGetValue(type, out var instance)) { instance = new Multiton(type); instances.Add(type, instance); } return(instance); }
// Sample usage public static void Main() { Student std1 = new Student(); std1.StudentName = "Bill"; Console.WriteLine(std1.StudentName); ChangeReferenceType(std1); Console.WriteLine(std1.StudentName); var m0 = GetInstance(MultitonType.Zero); var m1 = Multiton.GetInstance(MultitonType.One); var m2 = Multiton.GetInstance(MultitonType.Two); Console.WriteLine(m0); Console.WriteLine(m1); Console.WriteLine(m2); A v1 = new A(); v1.val = 10; methodtoshowref(ref v1); Console.WriteLine(v1.val); }