Я уже давно занимаюсь поиском в Интернете... Хорошо, мне очень жаль, что это пафосно легко, но есть ли в 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 #, см.
который отвечает на этот вопрос и многие другие.