Nullable-Typ als generischer Parameter möglich?

Ich möchte so etwas machen:

myYear = record.GetValueOrNull<int?>("myYear"),

Beachten Sie den Typ nullable als generischen Parameter.

Seit derGetValueOrNull funktion könnte null zurückgeben mein erster versuch war dieser:

public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
  where T : class
{
    object columnValue = reader[columnName];

    if (!(columnValue is DBNull))
    {
        return (T)columnValue;
    }
    return null;
}

Aber der Fehler, den ich jetzt erhalte, ist:

Der Typ 'int?' muss ein Referenztyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode zu verwenden

Richtig!Nullable<int> ist einstruct! Also habe ich versucht, die Klassenbeschränkung auf a zu ändernstruct Einschränkung (und als Nebeneffekt kann nicht zurückkehrennull nicht mehr):

public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
  where T : struct

Nun die Aufgabe:

myYear = record.GetValueOrNull<int?>("myYear");

Gibt den folgenden Fehler aus:

Der Typ 'int?' muss ein nicht nullwertfähiger Werttyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode zu verwenden

Ist die Angabe eines nullfähigen Typs als generischer Parameter überhaupt möglich?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage