Рассмотрим следующий код в С#.
public int Foo(int a)
{
// ...
}
// in some other method
int? x = 0;
x = Foo(x);
Последняя строка вернет ошибку компиляции cannot convert from 'int?' to 'int'
, которая достаточно справедлива. Однако, например, в Haskell существует Maybe
, который является эквивалентом Nullable
в С#. Поскольку Maybe
является Functor
, я мог бы применить Foo
к x
с помощью fmap
. Имеет ли С# аналогичный механизм?