русский

C# - сделать в потомке дженерика параметр типа налловым

Heute, 11:16
Re: C# - сделать в потомке дженерика параметр типа налловым
 
Программист коренной житель
in Antwort alex445 3 Tage zurück, 22:54
Как сделать так, чтобы код не надо было повторять, заменяя лишь тип параметра?

Вариантов 2:

1) какпредложил AlexNek.Это если у тебя совсем простая логика. Т.е. если на вход null, то и вернуть null.

Если логика сложнее, то есть и другой вариант.

2) Разница между T и T? - проверка на null поэтому ее имеет смысл вынести:

class Bace<T> // нет ограничений на тип T
{
   protected virtual bool IsNull (T val)
   {
       return val is null;
   }

   public T ProcessValue(T input)
   {
       if (IsNull(input))
       {
          ....
       }
   }
}


class Derived<T> : Base<T?>
    where T : struct, INumber<T>
    {
        protected override bool IsNull(T? val)
        {
            return !val.HasValue;
        }
    }
 

Sprung zu