Вы можете использовать конструкцию :?
как шаблон (внутри match
) или как оператор:
let foo = bar :? System.Random
Это ведет себя немного иначе, чем в C #, потому что компилятор все еще пытается сделатьнекоторые проверки во время компиляции.Например, ошибочно использовать это, если результат будет точно false
:
let bar = 42
let foo = bar :? System.Random // Error
Я не думаю, что это может привести к путанице, но вы всегда можете добавить box
для преобразованияаргумент obj
, который может быть проверен для любого типа:
let foo = box bar :? System.Random