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