Я уже давно занимаюсь поиском в Интернете... Хорошо, мне очень жаль, что это пафосно легко, но есть ли в F # оператор для сравнения типов классов, таких как ключевое слово 'is' в С#? Я не хочу использовать полномасштабное выражение о матче или начинать кастинг. Приветствия
Простой тест типа в F #
Ответ 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
Ответ 2
Если вам нужна общая ссылка С# -to-F #, см.
который отвечает на этот вопрос и многие другие.