What could go wrong if you use a long parameter and not a subclass of EventArgs?
Args Event
This is not in itself, but it is not extensible. For argumentation, perhaps after 6 months you need to go through two long ones or add a line or add an entire list of information. With EventArgs in the signature, you can pass any derived type and not violate existing consumers; with a specific type of value, you are very limited.
EventArgs also allows you to communicate with the class that raised the event, for example. CancelEventArgs .
Sender
Honestly, I rarely use a sender for anything. It can also be somewhat controversial. For example, a user event in a control triggered by input into a text field ... who is the sender? a text box (perhaps more useful) or a control declaring a custom event?
However, this is a familiar convention, and with a well-documented interface it can be useful.
source share