sur MSDN J'ai trouvé qu'il s'agissait d'une erreur d'utiliser un modificateur "virtuel" dans une déclaration de méthode abstraite. L'un de mes collègues, qui devrait être un développeur assez expérimenté, bien que cela utilise cela dans son code:
public abstract class BusinessObject { public virtual void Render(){} public virtual void Update(){} }
5 Réponses :
Celles-ci ne sont pas des méthodes abstraites, elles sont des vides par défaut. La différence est que vous n'avez pas à les remplacer (si vous ne le faites pas, rien ne se passera).
Cela pourrait aider votre compréhension à les voir formaté comme: P>
public abstract class BusinessObject { public virtual void Render() { } public virtual void Update() { } }
Oh, c'est aussi je ne peux pas utiliser le mot-clé virtuel s'ils avaient un corps, non?
@MOCCO: Ils font I> ont un corps, c'est juste vide. Les méthodes ne peuvent pas être virtuel code> sans i> un corps.
S'il n'y a pas de corps, ils ne peuvent pas être virtuels. S'il y a un corps, ils ne peuvent pas être abstraits
Il peut avoir du sens si la classe Abstrée fournit un point de sorte que les classes héritées seront généralement cette méthode est appelée par la classe abstraite: p> ici il est logique d'avoir Onaddedfoo code> comme
virtuel code> et non
abstrait p > p>
Je suppose que le MSDN signifie que vous ne pouvez pas utiliser le modificateur Vous pouvez soit faire p> ce qui signifie qu'une classe héritante ou vous pouvez faire p> ce qui signifie qu'une classe héritante virtuel code> abstrait code> sur une méthode em> en même temps.
Vous vous référez probablement à cette phrase p>
Vous ne pouvez pas utiliser le modificateur virtuel avec l'état statique, abstrait, privé ou remplacer les modificateurs. P> blockQuote>
Cela signifie que vous ne pouvez pas utiliser cela dans la déclaration de méthode une méthode ne peut pas être à la fois virtuelle et abstraite. p>
L'usage que vous avez présenté est bien, car la classe est abstraite, cela signifie que vous pouvez y avoir des méthodes abstraites (sans mettre en œuvre qui doit être mise en œuvre par classe d'enfants) et la méthode virtuelle (avec la mise en œuvre pouvant être remplacer en classe enfant). P>
Le code Follwing signifie que vous mais si vous déclarez Méthode virtuelle Vous pouvez mettre une certaine logique à l'intérieur et peut strong> ovveride p>