patterncsharpCritical
Implementing a Singleton pattern in C#
Viewed 0 times
singletonimplementingpattern
Problem
Is this the best way to implement this pattern in C#?
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public static Singleton Instance { get { return instance; } }
static Singleton() {}
private Singleton() {}
}Solution
I use Jon Skeet's version of a thread safe Singleton with fully lazy instantiation in C#:
It works wonders for me! It's really easy to use, just get the instance from the Instance property like so;
public sealed class Singleton
{
// Thread safe Singleton with fully lazy instantiation á la Jon Skeet:
// http://csharpindepth.com/Articles/General/Singleton.aspx
Singleton()
{
}
public static Singleton Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly Singleton instance = new Singleton();
}
}It works wonders for me! It's really easy to use, just get the instance from the Instance property like so;
SingletonName instance = SingletonName.Instance;Code Snippets
public sealed class Singleton
{
// Thread safe Singleton with fully lazy instantiation á la Jon Skeet:
// http://csharpindepth.com/Articles/General/Singleton.aspx
Singleton()
{
}
public static Singleton Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly Singleton instance = new Singleton();
}
}Context
StackExchange Code Review Q#79, answer score: 74
Revisions (0)
No revisions yet.