F# F中的简单型式试验#

F# F中的简单型式试验#,f#,c#-to-f#,F#,C# To F#,我已经在谷歌上搜索了一段时间了。。。好的,很抱歉,这一个非常简单,但是在F#中是否有一个操作符来比较类类型,比如C#中的'is'关键字?我不想使用一个完整的比赛声明或开始铸造东西。干杯您可以将:?构造为模式(内部匹配)或运算符: let foo = bar :? System.Random 这与C#中的行为稍有不同,因为编译器仍试图在编译时执行一些检查。例如,如果结果肯定是false,则使用此选项是错误的: let bar = 42 let foo = bar :? System.Random

我已经在谷歌上搜索了一段时间了。。。好的,很抱歉,这一个非常简单,但是在F#中是否有一个操作符来比较类类型,比如C#中的'is'关键字?我不想使用一个完整的比赛声明或开始铸造东西。干杯

您可以将
:?
构造为模式(内部
匹配
)或运算符:

let foo = bar :? System.Random
这与C#中的行为稍有不同,因为编译器仍试图在编译时执行一些检查。例如,如果结果肯定是
false
,则使用此选项是错误的:

let bar = 42
let foo = bar :? System.Random // Error
我不认为这会导致混淆,但您始终可以添加
,将参数转换为
obj
,可以针对任何类型进行测试:

let foo = box bar :? System.Random
如果您想要一般的C到F快速参考,请参阅


这回答了这个问题和其他许多问题。

我认为这已经做到了。。。如果我在交互窗口中使用它,如果它们不是同一类型,它会不断给出“类型约束不匹配”错误,这让我有点不舒服。。。在实际的编辑器中,它似乎工作得很好。@Ciemnl-我添加了一些关于可能引起混淆的警告源的信息。我不知道如何才能得到“类型约束不匹配”。是的,这就是为什么。。。编译器对我的快速测试太聪明了,看不出它是否有效。我低估了F!我对这种语言印象深刻,想想看。。。