A nullable type represents either a value-type value or the absence of a value. It lets application models represent unset numbers without reserving magic values such as -1, including values that originate in SQL databases. section 9.1.1
In F#, use Option throughout domain code rather than mixing Nullable<T>, naked nulls, and options. Convert at .NET boundaries, then convert back when returning data to .NET consumers. section 9.1.5
Convert nullable values at an F# boundary
Use Option.ofNullable to turn a .NET nullable into an F# option, and Option.toNullable when data must cross back into .NET code. This keeps missing-value handling uniform inside the F# domain. section 9.1.5
open System let optionalName : string option = null |> Option.ofObj #1 let optionalNameTwo = "Isaac" |> Option.ofObj #2 let optionalAge = Nullable() |> Option.ofNullable #3 let optionalAgeTwo = Nullable 123 |> Option.ofNullable #4
Compare empty and populated Nullable values after converting them into options with Option.ofNullable; the same boundary pattern applies to .NET objects through Option.ofObj. section 9.1.5


