Почему в обработчике событий 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) даже когда можно использовать более конкретный тип, и в реальном программировании этоявляется важно соблюдать конвенцию.

Ответы на вопрос(12)

Ваш ответ на вопрос