1

鉴于这一行:

let win = XamlReader.Parse(xaml) :?> Window

:?>做什么?

我尝试查找三元但没有注意到:?,它似乎是用于类型测试?我也知道>是管道,但 Window 没有任何构造函数参数。

4

1 回答 1

9

它是与管道无关的动态转换运算符。我引用MSDN关于向下转换的部分:

:?>操作员执行动态转换,这意味着转换的成功是在运行时确定的。:?> 在编译时不检查使用运算符的强制转换;但在运行时,会尝试强制转换为指定的类型。如果对象与目标类型兼容,则转换成功。如果对象与目标类型不兼容,则运行时会引发 InvalidCastException

于 2012-12-13T16:52:19.117 回答