Quel est le besoin d'un constructeur privé en C#? Je l'ai eu comme question pour un test de C#.
Réponses
Trop de publicités?Si vous connaissez certains motifs de conception, c'est évident : une classe pourrait créer une nouvelle instance d'elle-même en interne et ne pas laisser les autres le faire. Un exemple en Java (je ne connais pas assez bien le C#, désolé) avec une classe singleton:
classe Meh
{
private Meh() { }
private static Meh theMeh = new Meh();
public static Meh getInstance() { return theMeh; }
}
Chaque fois que vous voulez empêcher l'instanciation directe d'une classe depuis l'extérieur de celle-ci, vous utiliserez un constructeur private
. Par exemple, avant C# 2.0 qui a introduit les classes static
, vous utilisiez un constructeur private
pour accomplir à peu près la même chose :
sealed class StaticClass {
private StaticClass() {
}
public static void DoSomething() {
}
}
Je peux me rappeler quelques utilisations pour cela:
- Vous pourriez l'utiliser à partir d'une méthode de fabrique statique à l'intérieur de la même classe
- Vous pourriez effectuer un travail commun à l'intérieur et ensuite l'appeler depuis un autre constructeur
- Vous pourriez l'utiliser pour empêcher l'exécution d'ajouter automatiquement un constructeur vide
- Il pourrait être utilisé (bien que privé) par certains outils de simulation et ORM (comme nhibernate)
- Réponses précédentes
- Plus de réponses