在C# 中,可將可空型別定義為泛型參數,因而在處理可為空值時提供靈活性。但是,必須考慮特定的約束以確保相容性。
提供的程式碼旨在使用 GetValueOrNull 函數從資料庫中檢索可為空的值。最初,泛型參數被限制為一個類,這導致錯誤為 int?是一個結構體。
為了解決這個問題,約束已更改為結構體。然而,又出現了一個錯誤,表示可為空類型必須是不可為空的。
解決方案是將GetValueOrNull 函數的回傳類型修改為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; }
透過遵循這些約束,可以將null 類型有效地用作泛型參數,從而提供靈活性並處理程式碼中的null 值。
以上是如何在 C# 中使用可空型別作為泛型參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!