F#为什么我不能使用:?运营商在F#互动?

时间:2016-09-12 14:07:35

标签: f# typechecking f#-interactive

我正在尝试检查某个变量是否属于某种类型:

let s = "abc"
let isString = s :? string

但在F#interactive中,我收到以下错误:

error FS0016: The type 'string' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion.

为什么会这样?我希望isString是一个bool。

1 个答案:

答案 0 :(得分:8)

因为你正在尝试使用密封型。

请改为使用:

let s = box "abc"
let isString = s :? string

使用密封类型执行此强制测试没有意义,因为它们不能具有任何子类型,而这正是错误消息告诉您的内容。