Модификатор доступа к обработчику событий против C # WinForms - PullRequest
0 голосов
/ 22 марта 2012

Недавно я разрабатывал приложения Windows Forms для MFC и C # и заметил разницу между модификаторами доступа в автоматически сгенерированных обработчиках событий.

В МФЦ

public:
afx_msg void OnBnClickedOk();

В C # Win Forms

private void button1_Click(object sender, EventArgs e)

Итак, мой вопрос: почему обработчики событий объявлены в MFC как общедоступные, я хотел бы сказать, что способ C # технически лучше, поскольку он способствует инкапсуляции (возможно, поэтому он был изменен).

Спасибо

1 Ответ

1 голос
/ 22 марта 2012

Прошло много времени с тех пор, как я сделал MFC ...

В конечном счете, различие между диспетчерскими сообщениями C # и MFC, и в равной степени это не просто разные языки, а совершенно разные платформы - так чтодействительно правильно сказать, что одно «лучше», чем другое, , особенно просто из-за видимости метода обработки событий.Ничто не мешает вам изменить видимость обработчика C #, на самом деле в некоторых случаях вам может понадобиться это, чтобы искусственно вызвать событие (хотя есть и другие более правильные архитектурные способы достижения того же самого).

Обычно элементы управления формой и их событиями по умолчанию являются собственным бизнесом, и это имеет смысл.Точно так же другая подсказка относительно позиции C # по умолчанию private находится в сигнатуре обработчиков - все они ожидают данных об отправителе и событии (обратите внимание, что MFC нет) - если базовый элемент управления является закрытым, то нет причин дляон общедоступен или защищен, поскольку внешний вызывающий не может предоставить правильные аргументы обработчику событий.

В этом отношении правильно, что обработчик является частным.

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