Englische Version: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html
Dies ist die uns bekannte Page_Load()-Methode. Tatsächlich handelt es sich um einen Event-Handler, der mit der Ausführung beginnt, wenn das in System.Web.UI.Page definierte Load-Ereignis ausgelöst wird.
// Event-Handler verwenden
protected void Page_Load(object sender, EventArgs e)
{
// Logik hier
}
Dies ist die Überschreibung der OnLoad()-Methode in der System.Web.UI.Page-Klasse. // Override verwenden
protected override void OnLoad(EventArgs e)
{
// Logik hier
base.OnLoad(e);
}
Obwohl beide oben genannten Methoden die gleiche Funktion erfüllen können, empfehle ich die Verwendung der Override-Methode.
Zunächst wird der Ereignisbehandlungsmechanismus verwendet, um die Kommunikation zwischen unabhängigen Objekten zu implementieren. Wenn beispielsweise auf eine Schaltfläche geklickt wird, kann die Seite diese Nachricht über den Ereignisverarbeitungsmechanismus lernen und verarbeiten. In diesem Beispiel ist das Load-Ereignis jedoch in System.Web.UI.Page definiert und selbst Teil unserer Seite. Es wäre seltsam, ein Ereignis innerhalb einer Klasse auszugeben und dann das Ereignis selbst zu verarbeiten.
Zweitens ist die Ereignisbehandlung hinsichtlich der Effizienz nicht so gut wie Override. Dies wird durch die Implementierung des .NET Framework bestimmt und wir alle wissen es.
Außerdem müssen bei der Verwendung von Ereignissen zwei Stellen gepflegt werden: der Anhang der Ereignisbehandlungsmethode und die Definition der Ereignisbehandlungsfunktion selbst. Obwohl ASP.NET 2.0 bereits einige vordefinierte Methodennamen für die Ereignisbehandlung bereitstellt, verwenden immer noch viele Entwickler ASP.NET 1.1. Wenn Sie Override verwenden, müssen Sie nur die Override-Funktion selbst pflegen.
Natürlich hat der Ereignisverarbeitungsmechanismus seine eigenen Vorteile. Beispielsweise ist es einfach, Ereignisverarbeitungsmethoden zur Laufzeit anzugeben, sodass mehrere überall verteilte Ereignisverarbeitungsmethoden nacheinander ausgeführt werden können. Wir werden diese Funktionen jedoch nicht in ASP.NET-Seiten verwenden. Wir werden immer eine Methode haben, um das Verhalten der Seite zu definieren, die geladen wird, und es werden nicht mehrere Page_Load()-Methoden auf einer Seite erscheinen.
Um allgemeiner zu sein: Nicht nur auf ASP.NET-Seiten sollten wir Override anstelle von Event auch in anderen Situationen so oft wie möglich verwenden.
Achten Sie bei der Verwendung von Override darauf, nicht zu vergessen, die Basisklassenmethode aufzurufen (Visual Studio erledigt das für Sie).
Quelle: Dflying Chen BLOG