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