Étant donné le code suivant, existe-t-il un moyen de qualifier la version X de la classe X?Comment appeler l'implémentation de base d'une méthode virtuelle substituée?
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...
}
(Salut Juste pour mémoire, quelqu'un supprimé l'étiquette du « truc stupide que j'ajouté, puis quelqu'un Sinon, j'ai supprimé le commentaire en le faisant remarquer, ce qui me donne l'impression que je veux vraiment le faire.) Il est utile d'être averti des modifications stupides que les gens semblent vouloir faire.) – mackenir
Appeler AX() depuis l'intérieur B est la seule situation que je peux même vous voir avoir besoin de l'appeler une fois dépassé. Supposons que vous ayez une méthode de copie avec les membres de la classe de base, puis remplacez-la pour ajouter une fonctionnalité de copie pour les nouveaux membres et appelez base.copy() à l'intérieur pour que tout soit copié. – steviesama
Intéressant, j'aurais pensé que cela pourrait se faire par réflexion? – mhand