Maison > développement back-end > C++ > Quel est l'ordre d'exécution du constructeur dans l'héritage C# ?

Quel est l'ordre d'exécution du constructeur dans l'héritage C# ?

DDD
Libérer: 2025-01-22 23:47:14
original
257 Les gens l'ont consulté

What's the Constructor Execution Order in C# Inheritance?

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 :

  1. Les variables membres de toutes les classes de la hiérarchie d'héritage sont initialisées aux valeurs par défaut.
  2. 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.
  3. 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>
Copier après la connexion

Lors de la création d'une instance Derived, la séquence d'exécution est la suivante :

  1. Attribuez des valeurs par défaut aux variables membres de Base et Derived.
  2. Exécutez l'initialiseur de variable de Derived et définissez ses propres variables membres.
  3. Appelez le constructeur de la classe de base (Base(int param1)) avec les paramètres spécifiés.
  4. 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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal