0

所以我有一个非常简单的问题。我有一个接收 2 个参数的函数。这是函数定义:

 private void Document_TextChanged(object sender, EventArgs e)

我知道 sender 对象总是有一个名为 text 的属性,但编译器显然不知道这一点。有没有一种好方法可以让我引用此属性而不会出现编译器错误?显然 sender.property 不起作用。

4

2 回答 2

4

使用演员表。如果您始终确定 sender 是 SomeType 类型,则可以简单地使用

SomeType senderAsSomeType = (SomeType)sender;

如果你不能确定类型是什么,你可以使用as操作符来转换值,如果它是 SomeType 类型,或者 getnull如果不是:

SomeType senderAsSomeType = sender as SomeType;
if (senderAsSomeType != null) {
   //do something
}
于 2013-09-24T07:11:50.050 回答
2

如果有少数类具有这样的 text 属性,则另一种选择是使用 dynamic :

dynamic textProperty = sender;
Console.WriteLine(textProperty.Text);
于 2013-09-24T07:17:15.577 回答