什么:?>在f#中意味着什么?

Gor*_*a3D 1 f# piping

鉴于这条线:

let win = XamlReader.Parse(xaml) :?> Window
Run Code Online (Sandbox Code Playgroud)

:?>做什么?

我试着查找三元但没有注意到:?,它似乎是进行型式测试?我也知道>是管道但Window没有任何构造函数参数.

pad*_*pad 9

它是动态铸造操作员,与管道无关.我引用了关于向下转发的MSDN部分:

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