В F # мантра, похоже, висцеральное избегание null
, Nullable<T>
и его ilk. Взамен мы должны использовать типы опций. Честно говоря, я действительно не вижу разницы.В чем разница между типом параметра и типом NULL?
Мое понимание F типа # опция является то, что она позволяет определить тип, который может содержать любой из его обычных значений, или
None
. Например,Option<int>
позволяет использовать все значения, которые могут иметьint
, в дополнение кNone
.Мое понимание типов с нулевым значением C# заключается в том, что оно позволяет указать тип, который может содержать любые его нормальные значения, или
null
. Например, aNullable<int>
a.k.aint?
допускает все значения, которые могут иметьint
, кромеnull
.
В чем разница? Сделайте некоторую замену словаря Nullable
и Option
, null
и None
, и у вас в основном есть то же самое. Что все суета над null
о?
Речь идет об избежании логических ошибок как можно раньше - с 'option', вы получаете предупреждение/ошибку компилятора для отказа проверить' None'; с 'null' вы этого не делаете. – ildjarn
Итак, теоретически, если был C# с совпадением шаблонов, который обеспечивал, чтобы вы обработали случай «null», это была бы стирка? –
ИМО, в значительной степени, хотя другие будут спорить об ощущении _semantic_ 'null'. – ildjarn