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?
Es gibt zwei offensichtliche Unterschiede:
OnDeactivated
nur innerhalb einer Klasse außer Kraft setzen, die von der Deklaration abgeleitet ist - nur "anderer" Code kann nur das Ereignis 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:)
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%Tags und Links c# events coding-style virtual