It is not called overload.
Basically, there is a set of types declared as follows:
namespace System {
delegate void Action();
delegate void Action<T>(T a);
delegate void Action<T1, T2>(T1 a1, T2 a2);
...
}
Each of them is a different type, regardless of the other. The compiler knows what type you mean when you try to refer to it by the presence or absence <>after the type name and the number of type parameters inside <>.
event- a completely different matter, and does not participate in this. If you are confused by the difference between the event and the delegate, see the following two questions: 1 2