[dead]
Yes, because it's checked by the compiler using normal constructs.
someNullableInstance.DoSomething(); // compiler error
if (someNullableInstance != null)
someNullableInstance.DoSomething(); // not an error
Option<T> is fine but it's a lot of syntax to use correctly.
C# 8.0 implementation of something like Optional<T> for reference types uses static flow analysis to ensure correct use of potentially null values. That's vastly superior in every way to Optional<T>.