Почему в обработчике событий C # параметр «отправитель» должен быть объектом?
В соответствии сПравила именования событий Microsoft,sender
параметр в обработчике событий C #являетсявсегда типа объекта, даже если возможно использовать более конкретный тип ".
Это приводит к большому количеству кода обработки событий, например:
RepeaterItem item = sender as RepeaterItem;
if (item != null) { /* Do some stuff */ }
Почему соглашение не рекомендует объявлять обработчик событий с более конкретным типом?
MyType
{
public event MyEventHander MyEvent;
}
...
delegate void MyEventHander(MyType sender, MyEventArgs e);
Я скучаю по Гоче?
Для потомков: я согласен с общим мнением в ответах, что конвенцияявляется использовать объект (и передавать данные черезEventArgs
) даже когда можно использовать более конкретный тип, и в реальном программировании этоявляется важно соблюдать конвенцию.