Explication détaillée de l'ordre d'exécution du constructeur C#
Lors de la définition d'un constructeur en C#, une question clé est la suivante : le constructeur de la classe actuelle est-il exécuté avant ou après l'appel du constructeur de la classe de base ?
Ordre d'exécution
La séquence d'exécution suit les étapes suivantes :
- Les variables membres de toutes les classes de la hiérarchie d'héritage sont initialisées aux valeurs par défaut.
- Commencez par la classe la plus dérivée :
- Exécutez un initialiseur de variable pour le type le plus dérivé.
- La chaîne de constructeurs détermine le constructeur de classe de base à appeler.
- Initialisez la classe de base (appliquez ces étapes de manière récursive).
- Les corps des constructeurs dans la chaîne d'héritage de cette classe sont exécutés séquentiellement.
- Veuillez noter que contrairement à Java, la classe de base est initialisée après l'exécution de l'initialiseur de variable.
Exemple
Considérez la hiérarchie de classes suivante :
<code class="language-csharp">class Base
{
public Base(int param1)
{
// 构造函数主体
}
}
class Derived : Base
{
public Derived(int param1, int param2) : base(param1)
{
// 构造函数主体
}
}</code>
Lors de la création d'une instance Derived, la séquence d'exécution est la suivante :
- Attribuez des valeurs par défaut aux variables membres de Base et Derived.
- Exécutez l'initialiseur de variable de Derived et définissez ses propres variables membres.
- Appelez le constructeur de la classe de base (Base(int param1)) avec les paramètres spécifiés.
- Exécutez le corps du constructeur de Derived.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn