What's the purpose of EventArgs as base class in the event pattern?

Viewed 2705

The classic general C# event has these parameters:

(object sender, EventArgs e)

I can implement an event with a more specific signature for the e argument, deriving for EventArgs.

Now, what's the purpose of a base class like EventArgs? I mean... it's empty. No base/abstract/virtual properties, nor fields, or something else.

Why the parameters of a basic event aren't just like below?

(object sender, object eventArgs)

That is, why all the event with some implemented and specific event-args parameter derive it from EventArgs and not from a simple object?

The above question is mirrored with the following one. The event delegate in the generic form is:

delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)

and no restrictions are put on the parameter e. But I would have expected something like where TEventArgs : EventArgs, to be coherent...

1 Answers
Related