鉴于这一行:
let win = XamlReader.Parse(xaml) :?> Window
在:?>
做什么?
我尝试查找三元但没有注意到:?
,它似乎是用于类型测试?我也知道>
是管道,但 Window 没有任何构造函数参数。
它是与管道无关的动态转换运算符。我引用MSDN关于向下转换的部分:
:?>
操作员执行动态转换,这意味着转换的成功是在运行时确定的。:?>
在编译时不检查使用运算符的强制转换;但在运行时,会尝试强制转换为指定的类型。如果对象与目标类型兼容,则转换成功。如果对象与目标类型不兼容,则运行时会引发 InvalidCastException。