เวอร์ชันภาษาอังกฤษ: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html
นี่คือวิธี Page_Load() ที่เราคุ้นเคย ในความเป็นจริง มันเป็น Event Handler ซึ่งจะเริ่มดำเนินการเมื่อมีการทริกเกอร์เหตุการณ์ Load ที่กำหนดไว้ใน System.Web.UI.Page
// ใช้ตัวจัดการเหตุการณ์
โมฆะที่ได้รับการป้องกัน Page_Load (ผู้ส่งวัตถุ EventArgs e)
-
// ตรรกะที่นี่
-
นี่เป็นการแทนที่เมธอด OnLoad() ในคลาส System.Web.UI.Page // ใช้แทนที่
การป้องกันการแทนที่เป็นโมฆะ OnLoad (EventArgs e)
-
// ตรรกะที่นี่
ฐาน OnLoad (e);
-
แม้ว่าทั้งสองวิธีข้างต้นสามารถบรรลุฟังก์ชันเดียวกันได้ แต่ฉันขอแนะนำให้ใช้วิธีแทนที่
ประการแรก กลไกการจัดการเหตุการณ์ใช้เพื่อสื่อสารระหว่างอ็อบเจ็กต์อิสระ ตัวอย่างเช่น เมื่อมีการคลิกปุ่ม เพจสามารถเรียนรู้ข้อความนี้ผ่านกลไกการจัดการเหตุการณ์และประมวลผลได้ แต่ในตัวอย่างนี้ เหตุการณ์ Load ถูกกำหนดไว้ใน System.Web.UI.Page และเป็นส่วนหนึ่งของเพจของเรา คงจะแปลกที่จะปล่อยเหตุการณ์จากภายในชั้นเรียนแล้วจัดการกับเหตุการณ์นั้นเอง
ประการที่สอง ในแง่ของประสิทธิภาพ การจัดการเหตุการณ์ไม่ดีเท่า Override สิ่งนี้ถูกกำหนดโดยการใช้ .NET Framework และเราทุกคนรู้ดี
นอกจากนี้ จำเป็นต้องรักษาสองตำแหน่งเมื่อใช้เหตุการณ์: การแนบวิธีจัดการเหตุการณ์และคำจำกัดความของฟังก์ชันการจัดการเหตุการณ์นั้นเอง แม้ว่า ASP.NET 2.0 จะมีชื่อวิธีการจัดการเหตุการณ์ที่กำหนดไว้ล่วงหน้าอยู่แล้ว แต่ก็ยังมีนักพัฒนาจำนวนมากที่ใช้ ASP.NET 1.1 เมื่อใช้ Override คุณเพียงแค่ต้องรักษาฟังก์ชัน Override ไว้เท่านั้น
แน่นอนว่ากลไกการประมวลผลเหตุการณ์มีประโยชน์ในตัวเอง ตัวอย่างเช่น การระบุวิธีการประมวลผลเหตุการณ์ขณะรันไทม์เป็นเรื่องง่าย ทำให้สามารถดำเนินการวิธีการประมวลผลเหตุการณ์หลายวิธีตามลำดับได้ แต่เราจะไม่ใช้คุณลักษณะเหล่านี้ในหน้า ASP.NET เราจะมีวิธีกำหนดพฤติกรรมของเพจที่กำลังโหลดอยู่เสมอ และเราจะไม่มีวิธี Page_Load() หลายวิธีปรากฏบนเพจ
เพื่อให้เป็นทั่วไปมากขึ้น ไม่เพียงแต่ในหน้า ASP.NET เราควรใช้ Override แทน Event ในสถานการณ์อื่นๆ ให้มากที่สุด
เมื่อใช้ Override ระวังอย่าลืมเรียกเมธอดคลาสพื้นฐาน (Visual Studio จะช่วยคุณเอง)
ที่มา: Dflying Chen BLOG