所以我有一个非常简单的问题。我有一个接收2个参数的函数。这是函数定义:
private void Document_TextChanged(object sender, EventArgs e)
我知道sender对象将始终具有一个名为text的属性,但编译器显然不知道这一点。有没有一个很好的方法来引用这个属性而不会出现编译器错误?显然sender.property不起作用。
答案 0 :(得分:4)
使用演员。如果您始终确定发件人的类型为SomeType,则只需使用
即可SomeType senderAsSomeType = (SomeType)sender;
如果您无法确定类型是什么,则可以使用as
运算符来转换值,如果它是SomeType类型,或者如果不是,则使用null
:
SomeType senderAsSomeType = sender as SomeType;
if (senderAsSomeType != null) {
//do something
}
答案 1 :(得分:2)
另一种选择是使用dynamic,如果有几个类的可能性与text属性如下:
dynamic textProperty = sender;
Console.WriteLine(textProperty.Text);