Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Boleh Mengendalikan Jenis Nullable sebagai Parameter Generik Apabila Mendapatkan Rekod Pangkalan Data?

Bagaimana Saya Boleh Mengendalikan Jenis Nullable sebagai Parameter Generik Apabila Mendapatkan Rekod Pangkalan Data?

Patricia Arquette
Patricia Arquetteasal
2025-01-05 19:49:41799semak imbas

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

Menyelesaikan Had Jenis Nullable dalam Parameter Generik

Apabila cuba untuk menetapkan jenis nullable sebagai parameter generik dalam kaedah yang mengendalikan pengambilan semula rekod pangkalan data, seperti GetValueOrNull(pembaca DbDataRecord ini, nama lajur rentetan), yang mungkin anda hadapi pengehadan yang berkaitan dengan struktur boleh null.

Pada mulanya, kekangan kelas telah digunakan, membenarkan pengembalian null. Walau bagaimanapun, jenis nullable, seperti int?, adalah struct, dilarang sebagai jenis rujukan yang diperlukan oleh kekangan kelas.

Untuk membetulkan ini, menukar kekangan kepada struct dibenarkan untuk nilai pulangan tidak boleh null. Walau bagaimanapun, apabila cuba untuk menetapkan jenis yang boleh dibatalkan, ralat menunjukkan bahawa jenis nilai tidak boleh dibatalkan diperlukan.

Untuk mengatasi pengehadan ini, pertimbangkan strategi berikut:

  • Ubah suai pulangan taip ke Nullable untuk menampung nilai nullable.
  • Nyatakan jenis asas tidak boleh batal dalam panggilan kaedah, seperti yang dilihat dalam kod di bawah:
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;
}

Dengan menggunakan pendekatan ini, anda memperkasakan Kaedah GetValueOrNull untuk mengendalikan jenis nullable, memastikan perolehan semula nilai pangkalan data yang lancar.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mengendalikan Jenis Nullable sebagai Parameter Generik Apabila Mendapatkan Rekod Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn