Nullbare typer er gode, men kun for typer, der ikke kan nulstilles til at begynde med.
For at gøre en type "nullbar" skal du tilføje et spørgsmålstegn til typen, for eksempel:
int? value = 5;
Jeg vil også anbefale at bruge "as
" søgeord i stedet for casting. Du kan kun bruge søgeordet "som" på nullbare typer, så sørg for at du caster ting, der allerede er nullbare (som strenge), eller du bruger nullbare typer som nævnt ovenfor. Begrundelsen for dette er
- Hvis en type er nullbar, vises "
as
" søgeord returnerernull
hvis en værdi erDBNull
. - Det er altid en smule hurtigere end at kaste, men kun i visse tilfælde. Dette i sig selv er aldrig en god nok grund til at bruge
as
, men sammen med årsagen ovenfor er det nyttigt.
Jeg vil anbefale at gøre noget som dette
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
I tilfældet ovenfor, hvis row
kommer tilbage som DBNull
, derefter value
bliver null
i stedet for at smide en undtagelse. Vær opmærksom på, at hvis din DB-forespørgsel ændrer de kolonner/typer, der returneres, brug as
vil få din kode til lydløst at fejle og gør værdier enkle null
i stedet for at kaste den passende undtagelse, når forkerte data returneres, så anbefales det, at du har test på plads for at validere dine forespørgsler på andre måder for at sikre dataintegritet, efterhånden som din kodebase udvikler sig.