If you are using the .Net framework (version 3.0 for sure, I've not checked the specs of the others but I can't believe its different) and you want to implement the singleton pattern then
public sealed class MySingleton
{
private MySingleton() { }
public static readonly MySingleton Instance =
new MySingleton();
}
Is all you need; the framework will handle lazy initialization and thread safety for you. You don't need a lock with double check and all that GOF goodness, that was back in the days of C++, those days are gone now, embrace the framework and feel the .Net love :-)