Le singleton le plus court au monde s’écrit en C#
Date of publication
7/17/2018
No comments
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 ?