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
Lepaskan: 2025-01-05 19:49:41
asal
831 orang telah melayarinya

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan