Lazy, thread safe singleton (for .NET 3.5 or C# with Example



Lazy, thread safe singleton (for .NET 3.5 or C# with Example

older, alternate implementation) 
Because in .NET 3.5 and older you don't have Lazy class you use the following pattern: 
public class Singleton 
{ 
private Singleton() // prevents public instantiation 
{ 
} 
public static Singleton Instance 
{ 
get 
{ 
return Nested.instance; 
} 
} 
private class Nested 
{ 
 

// Explicit static constructor to tell C# compiler 
// not to mark type as beforefieldinit 
static Nested() 
{ 
} 
internal static readonly Singleton instance = new Singleton(); 
} 
} 
This is inspired from Jon Skeet's blog post. 
Because the Nested class is nested and private the instantiation of the singleton instance will not be triggered by 
accessing other members of the Sigleton class (such as a public readonly property, for example). 
 

0 Comment's

Comment Form

Submit Comment