Classe C # sans constructeur

Comment est-il possible que la classe en C # puisse ne pas définir de constructeur? Par exemple j’ai une classe

internal class TextStyle { internal ssortingng text = ""; internal Font font = new Font("Arial", 8); internal Color color = Color.Black; } 

Et dans le code cette classe est instanciée comme

 TextStyle textParameters = new TextStyle(); 

Si vous ne déclarez aucun constructeur pour une classe non statique, le compilateur fournit un constructeur public (ou protégé pour les classes abstraites) sans paramètre. Votre classe a effectivement un constructeur de:

 public TextStyle() { } 

Ceci est décrit dans la section 10.11.4 de la spécification C # 4:

Si une classe ne contient aucune déclaration de constructeur d’instance, un constructeur d’instance par défaut est automatiquement fourni. Ce constructeur par défaut appelle simplement le constructeur sans paramètre de la classe de base directe. Si la classe de base directe ne possède pas de constructeur d’instance accessible sans paramètre, une erreur de compilation survient. Si la classe est abstraite, l’accessibilité déclarée pour le constructeur par défaut est protected . Sinon, l’accessibilité déclarée pour le constructeur par défaut est public .

Les seules classes de C # qui n’ont pas de constructeur d’instance sont des classes statiques et elles ne peuvent pas avoir de constructeur.

Il y a un constrctor vide d’implicité si vous ne définissez pas d’autre constructeur.