Тип 'T' должен быть необнуляемым типом значения, чтобы использовать его в качестве параметра 'T' в универсальном типе или методе 'System.Nullable <T>'.
=====================================================================================================================================================================================

Почему я получаю эту ошибку в следующем коде?

Есть несколько проблем с кодом. Во-первых, ваши типы должны быть обнуляемыми. Вы можете выразить это, указав`where T: struct`, Вам также нужно будет указать`where TResult: struct` потому что ты'использую это как обнуляемый тип тоже.

Как только вы исправите`where T: struct where TResult: struct` вам также нужно изменить тип возвращаемого значения (что было неверно) и ряд других вещей.

После исправления всех этих ошибок и упрощения вы получите следующее:

Обратите внимание, что вы можете переписать`Nullable` как`T?` что делает вещи более читабельными.

Также вы можете написать это как одно утверждение, используя`?:` но я нене думаю, что этокак читается:

Возможно, вы захотите поместить это в метод расширения:

Тогда вы можете написать код так:



Как следует из ошибки, компилятор не может гарантировать, что T выигралэто уже может быть обнуляемым. Вам нужно добавить ограничение в T: