Cyrus’s Optional<T>


 While Refactoring the LazyLoader, we produced the code below.  It’s useful any time you want to add a sentinel value to a type.


 



interface IOptional<T>


{


    T Value { get;}


}


 


class None<T> : IOptional<T>


{


    public T Value


    {


        get { throw new System.NotImplementedException(); }


    }


}


 


class Some<T> : IOptional<T>


{


    readonly T value;


    public Some(T value)


    {


        this.value = value;


    }


 


    public T Value


    {


        get { return this.value; }


    }


}


 

Skip to main content