Могли бы быть различные причины для различных людей. Для меня это преимущества.
Конец дня, это помогает мне кодировать быстрее, чем я могу сделать в блокноте или wordpad. Это - довольно серьезное основание для меня предпочесть IDE.
У меня был этот вопрос около года назад, я остановился на переопределении, а не на событиях On_X. Вот статья, которую я прочитал, в которой описаны плюсы и минусы: http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx
По сути, в этих двух подходах нет никакой разницы. Это то, что делается в OnInit в классе Page:
protected internal override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this._theme != null)
{
this._theme.SetStyleSheet();
}
if (this._styleSheet != null)
{
this._styleSheet.SetStyleSheet();
}
}
Если мы откроем base.OnInit, мы увидим, что это место, где запускается Page_Init:
protected internal virtual void OnInit(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventInit] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
Таким образом, в основном нет разницы в этих двух подходах. Однако вам нужно вызвать base.OnInit в вашем методе переопределения, если вы решите использовать переопределение вместо события. И еще одно отличие состоит в том, что если вы используете переопределение, вы можете запустить некоторый код сразу после применения Темы.
С уважением.
PS Единственное, что я рекомендую, это использовать один и тот же подход во всем приложении.
Здесь есть хороший ответ http://objectmix.com/dotnet/251824-oninit-page_init.html .
http: //www.justskins .com / forum / page_init-and-page_load-59045.html дает более подробный ответ.
Если AutoEventWireup имеет значение false, необходимо переопределить OnInit, поскольку Page_Init не доступен автоматически.
Переопределение метода базового типа предпочтительнее, поскольку виртуальный вызов проще и чище, чем создание делегата, присоединяющего событие к группе методов.
Кроме того, полагаясь на AutoEventWireup
], установленное на true
, означает, что вы вводите накладные расходы на синтаксический анализ кода вашей страницы, поскольку ASP.NET должен будет создавать для вас любых делегатов во время выполнения.