Pregunta
He estado buscando en Google por un tiempo ... OK, lo siento, este es patéticamente fácil, pero ¿hay un operador en F# para comparar los tipos de clases, como la palabra clave 'is' en C#? No quiero usar una declaración de partida completa o comenzar a lanzar cosas. Salud
Solución
Puedes usar el :?
construir ambos como patrón (dentro match
) o como operador:
let foo = bar :? System.Random
Esto se comporta de manera ligeramente diferente que en C#, porque el compilador aún intenta hacer algunos controles en el tiempo de compilación. Por ejemplo, es un error usar esto si el resultado sería seguramente false
:
let bar = 42
let foo = bar :? System.Random // Error
No creo que esto pueda conducir a la confusión, pero siempre puedes agregar box
para convertir el argumento a obj
, que se puede probar con cualquier tipo:
let foo = box bar :? System.Random
Otros consejos
Si desea una referencia general C#-a f#, consulte
que responde a esta pregunta y a muchos otros.