Partager via


Constructeurs privés (Guide de programmation C#)

Mise à jour : novembre 2007

Un constructeur privé est une instance spéciale de constructeur. Un tel constructeur est généralement utilisé dans les classes qui contiennent uniquement des membres statiques. Si une classe possède un ou plusieurs constructeurs privés et aucun constructeur public, les autres classes (à l'exception des classes imbriquées) ne peuvent pas créer des instances de cette classe. Par exemple :

class NLog
{
    // Private Constructor:
    private NLog() { }

    public static double e = Math.E;  //2.71828...
}

La déclaration du constructeur vide empêche la génération automatique d'un constructeur par défaut. Notez que si vous n'utilisez pas un modificateur d'accès avec le constructeur, ce dernier sera néanmoins privé par défaut. Toutefois, le modificateur private est habituellement utilisé explicitement pour qu'il soit clair que la classe ne peut pas être instanciée.

Les constructeurs privés sont utilisés pour empêcher la création d'instances d'une classe lorsqu'il n'existe pas de champ d'instance ou de méthode, telle que la classe Math, ou lorsqu'une méthode est appelée pour obtenir une instance d'une classe. Si toutes les méthodes dans la classe sont statiques, envisagez de rendre la classe entière statique. Pour plus d'informations, consultez Classes statiques et membres de classe statique (Guide de programmation C#).

Exemple

Exemple de classe qui utilise un constructeur privé :

public class Counter
{
    private Counter() { }
    public static int currentCount;
    public static int IncrementCount()
    {
        return ++currentCount;
    }
}

class TestCounter
{
    static void Main()
    {
        // If you uncomment the following statement, it will generate
        // an error because the constructor is inaccessible:
        // Counter aCounter = new Counter();   // Error

        Counter.currentCount = 100;
        Counter.IncrementCount();
        Console.WriteLine("New count: {0}", Counter.currentCount);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: New count: 101

Notez que si vous supprimez les marques de commentaire de l'instruction suivante tirée de l'exemple, une erreur est générée, car le constructeur est alors inaccessible à cause de son niveau de protection :

// Counter aCounter = new Counter();   // Error

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 10.11.5 Constructeurs privés

  • 10.1.1.3 Classes statiques

Voir aussi

Concepts

Guide de programmation C#

Référence

Classes et structs (Guide de programmation C#)

Constructeurs (Guide de programmation C#)

Destructeurs (Guide de programmation C#)

private (Référence C#)

public (Référence C#)