Typy s možnou hodnotou null jsou dobré, ale pouze pro typy, které pro začátek nelze použít.
Chcete-li, aby byl typ "nulovatelný", přidejte k typu otazník, například:
int? value = 5;
Také bych doporučil použít "as
Klíčové slovo " místo přetypování. Klíčové slovo "as" můžete použít pouze u typů s povolenou hodnotou null, takže se ujistěte, že přetypováváte věci, které již mohou být povoleny (např. řetězce), nebo používáte typy s povolenou hodnotou null, jak je uvedeno výše. Důvodem je
- Pokud je u typu povolena hodnota null, „
as
" klíčové slovo vracínull
pokud je hodnotaDBNull
. - Je to o něco rychlejší než odesílání, i když jen v některých případech. To samo o sobě není nikdy dost dobrý důvod pro použití
as
, ale ve spojení s výše uvedeným důvodem je to užitečné.
Doporučil bych udělat něco takového
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
V případě výše, pokud row
vrátí se jako DBNull
a poté value
bude null
místo vyvolání výjimky. Uvědomte si, že pokud váš dotaz DB změní vracené sloupce/typy, pomocí as
způsobí, že váš kód tiše selže a zjednodušit hodnoty null
namísto vyvolání příslušné výjimky, když jsou vrácena nesprávná data, se proto doporučuje, abyste zavedli testy pro ověření vašich dotazů jinými způsoby, abyste zajistili integritu dat, jak se vaše kódová základna vyvíjí.