c# - 为什么 .NET 事件有一个对象类型而不是 T 类型的发送者参数?

标签 c# .net generics event-handling

<分区>

Possible Duplicates:
In a C# event handler, why must the "sender" parameter be an object?
Event Signature in .NET — Using a Strong Typed 'Sender'?

为什么 .NET 中的所有事件的第一个参数都是 object 类型,而不是通用类型 T?每次我必须得到我的发件人时,我必须将它转换为一些更派生的类型。例如:

(Button)sender

最佳答案

因为事件处理程序方法的通用签名早在泛型被添加到语言中之前就已经发明了。

使用 System.Object在泛型之前的日子里是合乎逻辑的选择,因为它确实是可用的最“通用”对象。所有其他对象最终都派生自 System.Object,包括控件、BCL 类和用户定义类,因为它位于类型层次结构的根部。

关于c# - 为什么 .NET 事件有一个对象类型而不是 T 类型的发送者参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057431/

相关文章:

c# - 更改 GUID 中的两个字节

c# - 如何在多个线程之间共享一个 mysql 连接?

c# - 如何将 MediatR PublishStrategy 添加到现有项目

.net - F# - 将 100 个对象创建到一个列表中 - 最实用和惯用的方式

android - Mono for Android Binding - 锯齿状数组

c# - 如何在 Entity Framework 数据上下文中的属性名称中使用 sql 保留关键字?

c# - 检查类型是否为 Nullable 的正确方法

c# - 将多个通用接口(interface)传递给一个方法

c# - 包含实现 IDisposable 的项目的 session

android - Kotlin 泛型继承问题