Maison > développement back-end > C++ > Comment puis-je accéder à l'implémentation de méthode virtuelle d'une classe de base à partir d'une classe dérivée en C# ?

Comment puis-je accéder à l'implémentation de méthode virtuelle d'une classe de base à partir d'une classe dérivée en C# ?

Barbara Streisand
Libérer: 2024-12-26 18:43:09
original
955 Les gens l'ont consulté

How Can I Access a Base Class's Virtual Method Implementation from a Derived Class in C#?

Remplacer les méthodes virtuelles : accéder à l'implémentation de base

Dans un environnement orienté objet, lorsqu'une classe remplace une méthode virtuelle, elle devient une méthode courante question sur la façon d'accéder à l'implémentation d'origine.

Considérez le code suivant :

class A
{
  virtual void X() { Console.WriteLine("x"); }
}

class B : A
{
  override void X() { Console.WriteLine("y"); }
}

class Program
{
  static void Main()
  {
    A b = new B();
    // Call A.X somehow, not B.X...
  }
}
Copier après la connexion

Le L'objectif est d'appeler la méthode X de la classe A à partir de la portée de la classe B. Cependant, le comportement par défaut lors du remplacement d'une méthode virtuelle est de remplacer l'implémentation dans la classe dérivée.

Accès à l'implémentation de base

En C#, il n'est malheureusement pas possible d'accéder explicitement à l'implémentation de la méthode de base depuis l'extérieur de la méthode remplacée. En effet, le mécanisme de répartition de méthode virtuelle lie dynamiquement l'appel à l'implémentation remplacée dans B.

Approches alternatives

Si l'accès à l'implémentation de base est crucial, il peut y avoir défauts de conception qui méritent d’être pris en compte. La fonctionnalité peut ne pas convenir à l'objectif d'une méthode virtuelle et devrait potentiellement être implémentée dans une méthode non virtuelle.

Alternativement, on peut invoquer l'implémentation de base dans la méthode remplacée elle-même :

class B : A
{
  override void X() { 
    base.X();
    Console.WriteLine("y"); 
  }
}
Copier après la connexion

Cependant, cette invocation de méthode est limitée à la portée de la méthode remplacée par la classe dérivée.

En outre Exploration

Bien que C# ne fournisse pas de méthode directe pour accéder à l'implémentation de base, il existe des approches alternatives à considérer, telles que l'utilisation de la réflexion ou de la manipulation IL (Intermediate Language) pour obtenir ce comportement.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal