public class Singleton
{
private readonly static Singleton instance = new Singleton();
private Singleton() { }
public static Singleton Instance => instance;
}
This implementation is thread-safe because in this case instance
object is initialized in the static constructor. The CLR already ensures that all static constructors are executed thread-safe.
Mutating instance
is not a thread-safe operation, therefore the readonly
attribute guarantees immutability after initialization.