J'ai besoin de savoir quelque chose sur l'héritage en C#. J'ai une classe ci-dessous:Héritage en C# et appel à base.X() en utilisant la fonction surchargée Y()
Class BaseClass
{
public void X()
{
//Some code here
Y();
}
public void Y()
{
//Some code here
}
}
Maintenant, je veux créer une autre classe (ChildClass) qui découle de BaseClass. Le problème est que je veux en quelque sorte surcharger la fonction Y() dans ChildClass, et lorsque la fonction base.X() est appelée, je veux que la fonction X() utilise la fonction Y() surchargée dans ChildClass. Quelqu'un m'a suggéré d'utiliser le mot-clé 'delegate' pour la fonction Y lors du remplacement. Mais, je ne suis pas sûr que ça va marcher.
Est-ce possible? Aucune suggestion?
Veuillez noter que ce n'est pas vraiment un modèle recommandé (appelant une méthode virtuelle d'un constructeur). vous ne pouvez pas savoir si la fonction prioritaire est implémentée correctement. si elle déclenche une exception, cette exception déclenchera et sortira le constructeur. lancer une exception d'un constructeur est mauvais. –
@ oɔɯǝɹ: Il n'y a aucun problème avec les constructeurs qui lancent des exceptions dans C#/.NET, et en fait, de nombreuses classes de framework le font. Le problème réel concernant l'appel de méthodes virtuelles dans les constructeurs est que ChildClass.Y() 'peut être basé sur l'initialisation complète de ChildClass (en particulier, les champs privés que ChildClass peut avoir), ce qui n'est pas le cas à ce moment-là. lorsque le constructeur 'BaseClass' est exécuté. –
@ O.R.Mapper: vous avez raison, je suis confondu avec les exceptions du constructeur de classe statique. Ce sont méchants. –