Advertisement
joernneumeyer

C# Optional Extension

Jan 21st, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.51 KB | None | 0 0
  1. namespace MeyerExtensions.Types
  2. {
  3.   public sealed class Optional<T>
  4.   {
  5.     public bool IsNone { get; private set; } = false;
  6.  
  7.     public T Value { get; } = default;
  8.  
  9.     public Optional(T value)
  10.     {
  11.       this.Value = value;
  12.       this.IsNone = value == null;
  13.     }
  14.  
  15.     public static Optional<T> Some(T value) => new Optional<T>(value);
  16.     public static Optional<T> None() => new Optional<T>(default(T)) { IsNone = true };
  17.     public static implicit operator Optional<T>(T value) => Some(value);
  18.   }
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement