Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Какой смысл инструкции base.OnFormClosing() в одноименном методе?

#c_sharp #winforms


В коде события, в одном из примеров, увидел следующее:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    //Написан код, который сохраняет пользовательские данные
    //

    base.OnFormClosing(e); //Интересна именно эта строчка
}


Какой смысл несет последняя строка? Для чего она нужна и когда используется?
    


Ответы

Ответ 1



Смотрите, в чём смысл виртуальных методов вообще? Он в том, что вы полностью подменяете метод родительского класса на свой. И теперь ответственность за то, чтобы сделать всё правильно, лежит на вас. Но чаще всего это слишком большая ответственность: вы не знаете/не помните всех вещей, которые должен сделать метод. Или просто не хотите дублировать код родительского метода. В этом случае вы просто вызываете родительский метод через base, он делает всё, что требуется от данного кода, а вы добавляете свой код до, после или вокруг вызова base-метода. Таким образом вы можете гарантировать, что вы ничего не забыли сделать при подмене метода.

Ответ 2



Ключевое слово base используется для доступа к членам базового из производного класса. То есть после сохранения пользовательских данных вызывается функция из производного класса. Подобное нужно если в базовом классе есть какой то функционал который нужны вызвать до/(или как в данном случае)после выполнения функции из дочернего класса.

Комментариев нет:

Отправить комментарий