Nullable-Typen als generische Parameter
Nullable-Werttypen wie int? stellen die Möglichkeit dar, einen Wert zu halten oder null zu sein. Während die Handhabung von nullbaren Daten praktisch ist, gibt es Einschränkungen bei der Verwendung als generische Parameter.
Beachten Sie den folgenden Codeausschnitt:
myYear = record.GetValueOrNull<int?>("myYear");
Dieser Code versucht, den von GetValueOrNull zurückgegebenen nullbaren Wert zuzuweisen eine nullbare int-Variable (myYear). Der Compiler gibt jedoch einen Fehler aus: „Der Typ ‚int?‘ muss ein Referenztyp sein, um ihn als Parameter „T“ im generischen Typ oder der generischen Methode verwenden zu können Typ. Um dieses Problem zu beheben, ändern Sie den Rückgabetyp in Nullable
static void Main(string[] args) { int? i = GetValueOrNull<int>(null, string.Empty); } public static Nullable<T> GetValueOrNull<T>(DbDataRecord reader, string columnName) where T : struct { object columnValue = reader[columnName]; if (!(columnValue is DBNull)) return (T)columnValue; return null; }
Das obige ist der detaillierte Inhalt vonWarum können Nullable-Werttypen in C# nicht direkt als generische Typparameter verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!