Le singleton le plus court au monde s’écrit en C#

Depuis des années, j’écris des singletons avec le code suivant :


private static readonly MyClass Instance;

/// <summary>
/// Constructeur static
/// </summary>
static MyClass()
{
    // Instantiation du singelton
    Instance = new MyClass();
}

/// <summary>
/// Instance courante unique
/// </summary>
public static MyClass Current { get { return Instance; } }

/// <summary>
/// Constructeur privé
/// </summary>
private MyClass()
{
}

Mon singleton n’étant jamais supprimé, il n’est donc pas besoin d’être vérifié et instancié lors du Get. Je n’utilise pas de lock pour l’instanciation, car mon instance est créée via le constructeur statique (celui-ci ne peut être appelé qu’une fois).

Avec les dernières optimisations et simplifications de C# (propriétés privées en lecture seule), mon Singleton est devenu toujours plus court (2 lignes spécifiques):


/// <summary>
/// Constructeur statique
/// </summary>
static MyClass()
{
    // Instantiation du singelton
    Current = new MyClass();
}

/// <summary>
/// Instance courante unique
/// </summary>
public static MyClass Current { get; }


/// <summary>
/// Constructeur privé
/// </summary>
private MyClass()
{
}

À quand le Singleton en une ligne ?

Jérémy Jeanson

Comments

You have to be logged in to comment this post.