En F # mantra parece haber una evitación visceral de null
, Nullable<T>
y su tipo. A cambio, se supone que debemos usar tipos de opciones. Para ser honesto, realmente no veo la diferencia.¿Cuál es la diferencia entre un tipo de opción y un tipo que admite nulos?
Mi comprensión del tipo # F es la opción que le permite especificar un tipo que puede contener cualquiera de sus valores normales, o
None
. Por ejemplo, unOption<int>
permite todos los valores que puede tener unint
, además deNone
.Mi comprensión de los tipos anulables de C# es que le permite especificar un tipo que puede contener cualquiera de sus valores normales, o
null
. Por ejemplo, unNullable<int>
a.k.aint?
permite todos los valores que puede tener unint
, además denull
.
¿Cuál es la diferencia? Reemplaza el vocabulario con Nullable
y Option
, null
y None
, y básicamente tienes lo mismo. ¿De qué se trata todo el alboroto sobre null
?
Se trata de evitar errores lógicos tan pronto como sea posible: con 'option', se obtiene un error/advertencia del compilador por no verificar' None'; con 'null' no lo haces. – ildjarn
Entonces, en teoría, si hubiera un C# con coincidencia de patrón que asegurara que manejaste el caso 'nulo', sería un lavado? –
IMO, más o menos, aunque otros dirían lo contrario sobre la sensibilidad _semantic_ de 'null'. – ildjarn