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