I’m playing with the new features of C#/.NET 4.0; this is some code I wrote in LINQPad to try out the System.Lazy<T> class.
void Main()
{
Console.WriteLine("Running...");
Expensive one = GimmeOne;
Expensive two = GimmeOne;
if (one == two) Console.WriteLine("Same instance");
}
private static readonly Lazy<Expensive> _lazy =
new Lazy<Expensive>();
// If constructor arguments, use:
// new Lazy<Expensive>(() => new Expensive(args));
Expensive GimmeOne
{
get
{
return _lazy.Value; // thread safe
}
}
class Expensive
{
public Expensive()
{
Console.WriteLine("Creating expensive instance");
}
}
Output:
Running... Creating expensive instance Same instance
Update - October 14, 2010
The private field does not have to be static; there’s seldom a need for a true Singleton.
No Comments/Pingbacks for this post yet...
Development Central is the blog of Bill Sorensen, a professional software developer. Much of this will relate to C#, .NET, and OOP in general.
Disclaimer
These postings are provided "AS IS" with no warranties and confer no rights.