functional-csharp-code
functional-csharp-code copied to clipboard
Option.Map results in exception creating a new Some(null)
Hi. First off: reading the book at the moment and think it's great. Thank you.
I encountered a bug today when I tried to do this:
return Option<T>.Map(t => t.NullableA?.NullableB) // and either nullable A or B were null!
Creating a Some with a value of null threw an exception. My first thought was 'why doesn't that just create a None instead of throwing' but then I realised Its because its within a constructor.
What would you recommend as a sensible replacement to the code above? I replaced it with
return Option<T>.Match( Some: t => t.NullableA?.NullableB is null ? None : Some(b.NullableA?.NullableB), None:() => None);
I'm assuming I've misunderstood something. Thanks Dave