Conversion between Nullable types

后端 未结 2 1100
逝去的感伤
逝去的感伤 2021-01-12 11:20

Is there a converter in .NET 4.0 that supports conversions between nullable types to shorten instructions like:

bool? nullableBool = GetSomething();
byte? nb         


        
相关标签:
2条回答
  • 2021-01-12 11:39

    Not that I am aware of.
    You could just write a helper method like this:

    public Nullable<TTarget> NullableConvert<TSource, TTarget>(
              Nullable<TSource> source, Func<TSource, TTarget> converter)
        where TTarget: struct
        where TSource: struct
    {
        return source.HasValue ? 
                   (Nullable<TTarget>)converter(source.Value) : 
                   null;
    }
    

    Call it like this:

    byte? nbyte = NullableConvert(nullableBool, Convert.ToByte);
    
    0 讨论(0)
  • 2021-01-12 11:48

    I would write an extension method:

    public static class Extensions
    {
        public static TDest? ConvertTo<TSource, TDest>(this TSource? source) 
            where TDest: struct 
            where TSource: struct
        {
            if (source == null)
            {
                return null;
            }
            return (TDest)Convert.ChangeType(source.Value, typeof(TDest));
        }
    }
    

    and then:

    bool? nullableBool = true;
    byte? nbyte = nullableBool.ConvertTo<bool, byte>();
    
    0 讨论(0)
提交回复
热议问题