usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceSingleton Mode {classProgram {Static voidMain (string[] args) {Singleton S1=singleton.getinstance (); Singleton S2=singleton.getinstance (); if(S1 = =S2) {Console.WriteLine ("Objects is the same instance"); } console.read (); } } classSingleton {Private StaticSingleton instance; Private Static ReadOnly ObjectSyncRoot =New Object(); PrivateSingleton () {} Public StaticSingleton getinstance () {if(Instance = =NULL) { Lock(syncRoot)//Lock to prevent simultaneous access of two threads {if(Instance = =NULL)//So it is also necessary to determine whether the instance is empty, such as when the first thread comes in, and then the second thread comes in to create a second instance. {Instance=NewSingleton (); } } } returninstance; } } //Public sealed class Singleton//{ //private static readonly Singleton instance = new Singleton (); //Private Singleton () {}//Public static Singleton getinstance ()// { //return instance; // } //}}
C # Singleton mode