Страницы

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

пятница, 29 марта 2019 г.

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

В коде события, в одном из примеров, увидел следующее:
protected override void OnFormClosing(FormClosingEventArgs e) { //Написан код, который сохраняет пользовательские данные //
base.OnFormClosing(e); //Интересна именно эта строчка }
Какой смысл несет последняя строка? Для чего она нужна и когда используется?


Ответ

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

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

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