Virtuelle Methode überschreiben oder Event-Handler erstellen? [geschlossen]

8

Ich habe gerade die XNA-Dokumentation für die Spieleklasse und bemerkte, dass es ein Deactivated -Ereignis und eine OnDeactived virtuelle Methode gibt, die man überschreiben kann.

Sowohl das Erstellen eines Ereignishandlers für das Deactivated -Ereignis als auch das Überschreiben der virtuellen OnDeactived -Methode ermöglicht es dem Client, mit dem Verlust des Fokus des Spiels umzugehen.

Ich habe mich gefragt, welcher Ansatz generell verwendet werden sollte, um das Spiel zu verlieren. Erstellen eines Ereignishandlers oder Überschreiben der virtuellen Methode? Gibt es Unterschiede zwischen den einzelnen Ansätzen?

    
Ryan Peschel 17.10.2011, 18:47
quelle

2 Antworten

7

Es gibt zwei offensichtliche Unterschiede:

  • Sie können OnDeactivated nur innerhalb einer Klasse außer Kraft setzen, die von der Deklaration abgeleitet ist - nur "anderer" Code kann nur das Ereignis
  • verwenden
  • Innerhalb von OnDeactived liegt es an Ihnen, ob Sie base.OnDeactivated aufrufen möchten oder nicht - Sie können das Ereignis effektiv unterdrücken oder die Parameter ändern. Rufen Sie es vor oder nach Ihrem eigenen Code usw. auf.

Wenn Sie bereits von der Klasse abgeleitet sind, würde jeder Weg funktionieren - persönlich würde ich wahrscheinlich das Ereignis öfter verwenden als nicht, es sei denn, ich wollte andere Art von Aktion, die könnte nur durch Überschreiben durchgeführt werden. Abgesehen von allem anderen macht das den Code portabler, wenn Sie ihn irgendwo anders verschieben möchten. Andererseits bin ich generell kein Fan von Erbschaften, also bin ich voreingenommen:)

    
Jon Skeet 17.10.2011, 18:50
quelle
1

Die Entscheidung, ob die Methode überschrieben werden soll oder ob der Ereignishandler oft verwendet wird, hängt davon ab, wie viel Kontrolle Sie über das haben müssen, was während der Ausführung dieser Methode passiert. Durch das Überschreiben der Methode haben Sie die volle Kontrolle über die Methode, während der Event-Handler nur nach der Ausführung der Methode ausgeführt wird.

Wenn Sie ein hohes Maß an Kontrolle über das, was während dieser Methode passiert, benötigen, würde ich empfehlen, die Methode zu überschreiben. Wenn Sie nach der Ausführung der Methode einfach Code ausführen müssen, würde ich den Event-Handler verwenden.

%Vor%     
James Johnson 17.10.2011 19:11
quelle

Tags und Links