public static void Match <TNullable>(this TNullable?value, Action <TNullable> hasValue) where TNullable : struct
 {
     if (value.HasValue)
     {
         hasValue(value.Value);
     }
 }
 public static T?Match <T, TNullable>(this TNullable?value, Func <TNullable, T> hasValue) where TNullable : struct where T : struct
 {
     if (value.HasValue)
     {
         return(hasValue(value.Value));
     }
     return(null);
 }
示例#3
0
 public void Serialize(TNullable?value, TextWriter writer)
 {
     if (value == null)
     {
         writer.Write(JsonTokenizer.TokenNullValue);
     }
     else
     {
         _valueConverter.Serialize(value.Value, writer);
     }
 }
示例#4
0
 public void Serialize(TNullable?value, TextWriter output)
 {
     if (value == null)
     {
         output.Write(JsonValue.NullToken);
     }
     else
     {
         _valueConverter.Serialize(value.Value, output);
     }
 }
示例#5
0
    private static void Nullable <TNullable>(TNullable?n) where TNullable : struct, I
    {
        object    o1 = n;
        ValueType v1 = n;
        I         i1 = n;

        // always
        Func <int> f = n.GetHashCode;

        n.ExtensionMethod(); // boxing!
        n.GetType();

        // possible boxing INSIDE Nullable<T>
        n.GetHashCode();
        n.ToString();
        n.Equals(null);

        // no boxing
        n?.InstanceMethod();
    }
示例#6
0
 public static IQueryable <TSource> WhereIfNotNull <TSource, TNullable>(this IQueryable <TSource> queryable, TNullable?nullable, Expression <Func <TSource, bool> > predicate)
     where TNullable : class
 {
     if (nullable != null)
     {
         return(queryable.Where(predicate));
     }
     else
     {
         return(queryable);
     }
 }
示例#7
0
 public JsonData Write(TNullable?value)
 {
     return(value == null
         ? JsonValue.Null
         : _valueConverter.Write(value.Value));
 }
示例#8
0
 public static TResult May <TNullable, TResult>(this TNullable?nullable, Func <TNullable, TResult> selector)
     where TNullable : struct
 {
     return(nullable.HasValue ? selector(nullable.Value) : default(TResult));
 }