DavidArno / SuccincT

Discriminated unions, pattern matching and partial applications for C#
MIT License
268 stars 15 forks source link

A non-exception Value<T> alternative for unions #49

Open gavinSteyn opened 6 years ago

gavinSteyn commented 6 years ago

I'd like to be able to get the Value of a union using the syntax of Value() (i.e. using the class name), but without the risk of throwing an exception. I have 3 approaches in mind, and before I start coding I was hoping you could weigh in on which way I should go.

  1. Add a Option<T> GetValue<T>() which returns Some if the union is of type T, else None
  2. Add a bool TryGetValue<T>(out value) which returns a bool as to whether it succeeded and the actual value in the out param
  3. Add a bool HasValue<T>() which just returns a bool for whether this union is of type T

Do you have a preferred approach?

Thank you, Gavin Steyn

DavidArno commented 5 years ago

Putting a checklist here to keep track of adding this to the new v4:

DavidArno commented 4 years ago

Need to add details of these methods to the wiki now that v4 is released.