Переопределить производный член в классе - PullRequest
0 голосов
/ 18 августа 2011

Когда я перезаписываю событие из родительского класса, например, метода OnLoad () в System.Web.UI.Page, почему «base.OnLoad (e)» по-прежнему вызывается, но даже когда я удаляю вызовпереопределенный метод в базовом классе, событие Load все еще вызывается?

public partial class _Default : System.Web.UI.Page
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
    }
}

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Вызов base.OnLoad (e) гарантирует, что все в базовой реализации метода будет вызываться в дополнение к вашему коду, переопределяющему этот метод (а не только к коду в вашем выполняемом переопределенном методе).

В любом случае, оно не должно иметь никакого отношения к успешному запуску события или нет.

0 голосов
/ 18 августа 2011

Ваша строка кода protected override void OnLoad(EventArgs e) не переопределяет событие, потому что OnLoad не является событием.Он переопределяет метод, определенный в System.Web.UI.Control, от которого наследуется System.Web.UI.Page, который, как говорит MSDN , вызывает событие Load.

Если ваша реализация OnLoad вызывает base.OnLoad(e), вы должны обнаружить, что событие Load возбуждено.

Если ваша реализация OnLoad НЕ вызывает base.OnLoad, вы должны обнаружить, что событие Load НЕ вызывается.

Вы почти наверняка хотите убедиться, что звоните base.OnLoad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...