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