Typy dopuszczające wartość null są dobre, ale tylko dla typów, które na początku nie mogą być wartościami null.
Aby uczynić typ „nullable”, dodaj znak zapytania do typu, na przykład:
int? value = 5;
Polecam również użycie „as
Słowo kluczowe zamiast rzutowania. Słowa kluczowego as można używać tylko w przypadku typów dopuszczających wartość null, więc upewnij się, że rzutujesz elementy, które już dopuszczają wartość null (takie jak łańcuchy) lub używasz typów dopuszczających wartość null, jak wspomniano powyżej. Uzasadnienie tego jest
- Jeśli typ dopuszcza wartość null, „
as
" słowo kluczowe zwracanull
jeśli wartość toDBNull
. - Jest trochę szybszy niż rzucanie, ale tylko w niektórych przypadkach. To samo w sobie nigdy nie jest wystarczającym powodem, aby używać
as
, ale w połączeniu z powyższym powodem jest to przydatne.
Polecam zrobienie czegoś takiego
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
W powyższym przypadku, jeśli row
wraca jako DBNull
, a następnie value
stanie się null
zamiast zgłaszać wyjątek. Należy pamiętać, że jeśli zapytanie bazy danych zmienia zwracane kolumny/typy, używając as
spowoduje ciche niepowodzenie Twojego kodu i uprość wartości null
zamiast zgłaszać odpowiedni wyjątek, gdy zwracane są nieprawidłowe dane, dlatego zaleca się przeprowadzenie testów w celu sprawdzenia poprawności zapytań w inny sposób, aby zapewnić integralność danych w miarę rozwoju bazy kodu.