Ce n'est pas appelé une surcharge.
Fondamentalement, il existe un ensemble de types, a déclaré comme ceci:
namespace System {
delegate void Action();
delegate void Action<T>(T a);
delegate void Action<T1, T2>(T1 a1, T2 a2);
...
}
Chacun d'eux est un type différent, indépendant de tous les autres. Le compilateur sait quel type vous voulez dire lorsque vous essayez de le référencer par la présence ou l'absence de <>
après le nom de type, et le nombre de paramètres de type <>
.
event
est une chose totalement différente, et ne joue aucun rôle dans cela. Si vous êtes confus par la différence entre l'événement et le délégué, consultez ces deux questions: 12