Tipe nullable bagus, tetapi hanya untuk tipe yang awalnya tidak nullable.
Untuk membuat tipe menjadi "nullable" tambahkan tanda tanya pada tipe tersebut, misalnya:
int? value = 5;
Saya juga merekomendasikan menggunakan "as
" kata kunci alih-alih casting. Anda hanya dapat menggunakan kata kunci "sebagai" pada jenis nullable, jadi pastikan Anda mentransmisikan hal-hal yang sudah nullable (seperti string) atau Anda menggunakan jenis nullable seperti yang disebutkan di atas. Alasannya adalah
- Jika suatu jenis dapat dibatalkan, "
as
" kata kunci mengembalikannull
jika nilainyaDBNull
. - Ini sedikit lebih cepat daripada casting meskipun hanya dalam kasus tertentu. Ini sendiri tidak pernah menjadi alasan yang cukup baik untuk menggunakan
as
, tapi ditambah dengan alasan di atas semoga bermanfaat.
Saya akan merekomendasikan melakukan sesuatu seperti ini
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
Dalam kasus di atas, jika row
kembali sebagai DBNull
, lalu value
akan menjadi null
alih-alih melempar pengecualian. Ketahuilah bahwa jika kueri DB Anda mengubah kolom/tipe yang dikembalikan, menggunakan as
akan menyebabkan kode Anda gagal secara diam-diam dan buat nilai menjadi sederhana null
daripada membuang pengecualian yang sesuai saat data yang salah dikembalikan, jadi sebaiknya Anda melakukan pengujian untuk memvalidasi kueri Anda dengan cara lain guna memastikan integritas data seiring dengan berkembangnya basis kode Anda.