functional-csharp-code icon indicating copy to clipboard operation
functional-csharp-code copied to clipboard

Option.Map results in exception creating a new Some(null)

Open dcook-net opened this issue 6 years ago • 0 comments

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

dcook-net avatar Dec 05 '19 17:12 dcook-net