.net 如何转换;按钮b3=(按钮)发送器“;从c#到ironpython

.net 如何转换;按钮b3=(按钮)发送器“;从c#到ironpython,.net,silverlight,ironpython,.net,Silverlight,Ironpython,我想转换C#语句 Button b3 = (Button)sender; 对于ironpython语句b3=sender.Content()假设sender是类型化为object的(换句话说,没有用户定义的转换运算符),您可以像在C代码中使用b3一样使用sender。准确的相同代码为: b3=发送方 C#只需要这样做,因为它希望静态地键入对象。如果不使用按钮,而是对显式实现的对象的接口进行强制转换,则会变得更加复杂。在这种情况下,C编译器可以将隐式或显式强制转换插入按钮,可能会导致调用发送方上

我想转换C#语句

Button b3 = (Button)sender;

对于ironpython语句

b3=sender.Content()

假设sender是类型化为object的(换句话说,没有用户定义的转换运算符),您可以像在C代码中使用b3一样使用sender。准确的相同代码为:

b3=发送方


C#只需要这样做,因为它希望静态地键入对象。如果不使用按钮,而是对显式实现的对象的接口进行强制转换,则会变得更加复杂。

在这种情况下,C编译器可以将隐式或显式强制转换插入
按钮
,可能会导致调用
发送方
上的重载运算符。这是IronPython中没有的行为。这就是我用“没有用户定义的转换运算符”来限定它的原因。假设这是一个WinForms或WPF按钮,并且我们正在从对象强制转换(两者都可能),那么这里没有用户定义的转换运算符。这是因为WinForms和WPF层次结构没有定义用户定义的转换运算符,您不能为object添加一个。如果您确实希望确保运行用户定义的转换,可以调用clr.Convert。