C# implementation of Maybe