I have a TCPClient class. It has several ClientEvents. Originally it followed the standard patternpublic delegate void ClientEvent(object sender, ClientEventArgs e);Only TCPCLient uses this event. But I am pretty determined to keep things as standard as possible (all event based things I've seen use object sender). However what I don't see the point of, is having to cast sender to TCPClient every time. private static void Client_OnReconnect(object sender, ClientEventArgs e) {            TCPClient client = (TCPClient)sender;         }Is there any reason I shouldn't just usepublic delegate void ClientEvent(TCPClient client, ClientEventArgs e);as my event?
Does a C# event have to have an object type as its first parameter?
c#