所以我有一个非常简单的问题。我有一个接收 2 个参数的函数。这是函数定义:
private void Document_TextChanged(object sender, EventArgs e)
我知道 sender 对象总是有一个名为 text 的属性,但编译器显然不知道这一点。有没有一种好方法可以让我引用此属性而不会出现编译器错误?显然 sender.property 不起作用。
所以我有一个非常简单的问题。我有一个接收 2 个参数的函数。这是函数定义:
private void Document_TextChanged(object sender, EventArgs e)
我知道 sender 对象总是有一个名为 text 的属性,但编译器显然不知道这一点。有没有一种好方法可以让我引用此属性而不会出现编译器错误?显然 sender.property 不起作用。
使用演员表。如果您始终确定 sender 是 SomeType 类型,则可以简单地使用
SomeType senderAsSomeType = (SomeType)sender;
如果你不能确定类型是什么,你可以使用as
操作符来转换值,如果它是 SomeType 类型,或者 getnull
如果不是:
SomeType senderAsSomeType = sender as SomeType;
if (senderAsSomeType != null) {
//do something
}
如果有少数类具有这样的 text 属性,则另一种选择是使用 dynamic :
dynamic textProperty = sender;
Console.WriteLine(textProperty.Text);