Le type " T "doit être un non nullable type de valeur afin de l'utiliser comme paramètre" T " dans le générique du type ou de la méthode 'Système.Nullable<T>'

Pourquoi j'obtiens cette erreur dans le code suivant?

void Main()
{
    int? a = 1;
    int? b = AddOne(1);
    a.Dump();
}

static Nullable<int> AddOne(Nullable<int> nullable)
{
    return ApplyFunction<int, int>(nullable, (int x) => x + 1);
}

static Nullable<T> ApplyFunction<T, TResult>(Nullable<T> nullable, Func<T, TResult> function)
{
    if (nullable.HasValue)
    {
        T unwrapped = nullable.Value;
        TResult result = function(unwrapped);
        return new Nullable<TResult>(result);
    }
    else
    {
        return new Nullable<T>();
    }
}
Et quelle est la question??
Ne peut pas le tester dès maintenant, mais vous appelez ApplyFunction<int, int> au lieu de ApplyFunction<int?, int>?
Pourquoi les downvotes? Semble comme un son de question pour moi.

OriginalL'auteur Clive | 2013-05-24