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

时间:2012-12-13 16:48:56

标签: f# piping

鉴于这一行:

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

:?>在做什么?

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

1 个答案:

答案 0 :(得分:9)

它是动态铸造操作员,与管道无关。我引用MSDN section关于向下倾斜:

  

:?>运算符执行动态广告,这意味着成功   演员表是在运行时确定的。使用:?>的演员   在编译时不检查运算符;但在运行时,尝试   使其转换为指定的类型。如果对象兼容   使用目标类型,演员成功。如果对象不是   与目标类型兼容,运行时提出了一个    InvalidCastException的