The first is the simplest, but does not consider thread safety, in multi-threading may be problematic, but I have never seen the phenomenon of error, the table despise me ...
PublicClassSingleton
{
PrivateStaticSingleton _instance=Null;
PrivateSingleton (){}
public static Singleton createinstance ()
{
if (_instance == null< Span style= "LINE-HEIGHT:19PX; Color: #000000; " >)
{
_instance= new singleton ();
}
return _instance;
}
"
The second consideration is thread safety, but a bit annoying, but definitely formal, classic
PublicClassSingleton
{
PrivateVolatileStaticSingleton _instance=Null;
PrivateStaticReadOnlyObjectLockhelper=NewObject();
PrivateSingleton (){}
PublicStaticSingleton CreateInstance ()
{
If(_instance==Null)
{
Lock(Lockhelper)
{
If(_instance==Null)
_instance=NewSingleton ();
}
}
return _instance;
}
}
The third may be a high-level language specific to C #, and it's really lazy.
Public class Singleton
{
private singleton () {}
public static Readonly singleton instance = new< Span style= "LINE-HEIGHT:19PX; Color: #000000; " > singleton ();
}
Three ways to type C # Singleton mode