Utilisation de constructeurs
Quand une classe ou un struct est créé, son constructeur est appelé.
Les constructeurs portent le même nom que la classe ou le struct, et ils initialisent généralement les membres de données du nouvel objet.
Dans l'exemple suivant, une classe nommée Taxi est définie en utilisant un constructeur simple.
Cette classe est ensuite instanciée à l'aide de l'opérateur new.
Le constructeur Taxi est appelé par l'opérateur new immédiatement après l'allocation de la mémoire pour le nouvel objet.
Un constructeur qui ne prend pas de paramètres est appelé constructeur par défaut.
Les constructeurs par défaut sont appelés chaque fois qu'un objet est instancié à l'aide de l'opérateur new et qu'aucun argument n'est fourni à new.
Pour plus d'informations, consultez Constructeurs d'instances.
à moins que la classe soit statique, les classes sans constructeurs se voient attribuer un constructeur public par défaut par le compilateur C# pour activer l'instanciation de classe.
Pour plus d'informations, consultez Classes statiques et membres de classe statique.
Vous pouvez empêcher qu'une classe soit instanciée en rendant le constructeur privé, comme suit :
Les constructeurs pour les types struct ressemblent aux constructeurs de classe, mais les structs ne peuvent pas contenir de constructeur par défaut explicite,
car le compilateur en fournit automatiquement un. Ce constructeur initialise chaque champ du struct aux valeurs par défaut.
Pour plus d'informations, consultez Tableau des valeurs par défaut.
Toutefois, ce constructeur par défaut est appelé uniquement si le struct est instancié avec new. Par exemple, ce code utilise le constructeur par défaut pour Int32.
Vous êtes par conséquent assuré que l'entier est initialisé :
Toutefois, le code suivant provoque une erreur de compilateur, car il n'utilise pas new et il essaie d'utiliser un objet qui n'a pas été initialisé :
Les objets basés sur des structs (notamment tous les types numériques intégrés) peuvent également être initialisés ou assignés, puis utilisés, comme dans l'exemple suivant :
Ainsi, l'appel du constructeur par défaut pour un type valeur n'est pas obligatoire.
Les classes et les structs peuvent tous les deux définir des constructeurs qui prennent des paramètres.
Les constructeurs qui prennent des paramètres doivent être appelés à l'aide d'une instruction new ou d'une instruction base.
Les classes et les structs peuvent également définir plusieurs constructeurs, et ni l'un ni l'autre n'est nécessaire pour définir un constructeur par défaut. Par exemple :
Cette classe peut être créée à l'aide de l'une ou l'autre des instructions suivantes :
Un constructeur peut utiliser le mot clé base pour appeler le constructeur d'une classe de base. Par exemple :
Dans cet exemple, le constructeur de la classe de base est appelé avant que le bloc du constructeur ne soit exécuté. Le mot clé base peut être utilisé avec ou sans paramètres.
Tous les paramètres du constructeur peuvent être utilisés comme paramètres pour base ou comme partie d'une expression. Pour plus d'informations, consultez base.
Dans une classe dérivée, si un constructeur de classe de base n'est pas appelé explicitement à l'aide du mot clé base, le constructeur par défaut, s'il existe, est appelé implicitement.
Cela signifie que les déclarations de constructeur suivantes sont en fait les mêmes :
Si une classe de base n'offre pas de constructeur par défaut, la classe dérivée doit faire un appel explicite à un constructeur de base à l'aide du mot clé base.
Un constructeur peut appeler un autre constructeur dans le même objet à l'aide du mot clé this. Comme base, this peut être utilisé avec ou sans paramètres,
et tous les paramètres dans le constructeur sont disponibles comme paramètres pour this ou comme partie d'une expression.
Par exemple, le deuxième constructeur de l'exemple précédent peut être récrit à l'aide de this :
L'utilisation du mot clé this dans l'exemple précédent provoque l'appel de ce constructeur :
Les constructeurs peuvent être marqués comme public, private, protected, internal, protected internal ou private protected.
Ces modificateurs d'accès définissent la façon dont les utilisateurs de la classe peuvent construire la classe. Pour plus d'informations, consultez la page Modificateurs d'accès.
Un constructeur peut être déclaré statique à l'aide du mot clé static. Les constructeurs statiques sont appelés automatiquement,
juste avant que des champs statiques soient accessibles, et ils sont généralement utilisés pour initialiser des membres de classe statique.