Вы можете просто изменить метод, чтобы вернуть T?
, а затем вернуть Greater
. Если наибольшее значение вообще не является значением, зачем делать вид, что оно есть? С другой стороны, если вам действительно нужно вернуть какое-то необнуляемое значение, то вы можете сделать
if (Greater.HasValue)
return Greater.Value;
else
return /* define your default here */
Однако определить значение по умолчанию, подходящее для всех типов T
, будет сложно, поэтому вы также можете рассчитывать на автоматическое значение по умолчанию для типа.
return Greater.GetValueOrDefault(); // returns either Value or default(T)
Что является функциональным эквивалентом
if (Greater.HasValue)
return Greater.Value;
else
return default(T);