F#中的简单类型测试

Ed *_*ers 17 f# c#-to-f#

我已经谷歌搜索了一段时间......好吧,对不起,这个很简单,但是F#中有一个运算符来比较类类型,比如C#中的'is'关键字?我不想使用完整的匹配声明或开始铸造东西.干杯

Tom*_*cek 25

您可以将:?构造用作模式(内部match)或作为运算符:

let foo = bar :? System.Random
Run Code Online (Sandbox Code Playgroud)

这与C#中的行为略有不同,因为编译器仍尝试在编译时进行一些检查.例如,如果结果肯定会使用它是错误的false:

let bar = 42
let foo = bar :? System.Random // Error
Run Code Online (Sandbox Code Playgroud)

我认为这不会导致混淆,但您可以随时添加box转换参数obj,可以针对任何类型进行测试:

let foo = box bar :? System.Random
Run Code Online (Sandbox Code Playgroud)


Bri*_*ian 6

如果你想要一般的C#-to-F#快速参考,请参阅

http://lorgonblog.wordpress.com/2008/11/28/what-does-this-c-code-look-like-in-f-part-one-expressions-and-statements/

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