Why wasn't TEventArgs made contravariant in the standard event pattern in the .NET ecosystem?
问题 When learning more about the standard event model in .NET, I found that before introducing generics in C#, the method that will handle an event is represented by this delegate type: // // Summary: // Represents the method that will handle an event that has no event data. // // Parameters: // sender: // The source of the event. // // e: // An object that contains no event data. public delegate void EventHandler(object sender, EventArgs e); But after generics were introduced in C# 2, I think