首頁 >後端開發 >C++ >檢索資料庫記錄時如何將可空類型作為通用參數處理?

檢索資料庫記錄時如何將可空類型作為通用參數處理?

Patricia Arquette
Patricia Arquette原創
2025-01-05 19:49:41795瀏覽

How Can I Handle Nullable Types as Generic Parameters When Retrieving Database Records?

解決泛型參數中的可為空類型限制

嘗試在處理資料庫記錄檢索的方法中分配可為空類型作為泛型參數時,例如GetValueOrNull(this DbDataRecord reader, string columnName),您可能會遇到與可為null 相關的限制結構。

最初使用類別約束,允許傳回 null。但是,可空型別(例如 int?)是結構體,禁止作為類別約束所需的參考型別。

要修正此問題,請將限制變更為允許不可為空回傳值的結構體。但是,當嘗試指派可為空類型時,會發生錯誤,指示需要不可為空值類型。

要克服這些限制,請考慮以下策略:

  • 修改回傳值類型為 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;
}

透過採用這種方法,您可以授權GetValueOrNull 方法處理可為空類型,確保無縫檢索資料庫值。

以上是檢索資料庫記錄時如何將可空類型作為通用參數處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn