Nullable-typen zijn goed, maar alleen voor typen die om te beginnen niet nullable zijn.
Om een type "nullable" te maken, voeg je een vraagteken toe aan het type, bijvoorbeeld:
int? value = 5;
Ik zou ook aanraden om de "as
" trefwoord in plaats van casten. Je kunt het trefwoord "as" alleen gebruiken voor nullable-typen, dus zorg ervoor dat je dingen cast die al nullable zijn (zoals strings) of je gebruikt nullable-typen zoals hierboven vermeld. De reden hiervoor is
- Als een type nullable is, wordt de "
as
" zoekwoord retourneertnull
als een waardeDBNull
. is . - Het is iets sneller dan casten, maar alleen in bepaalde gevallen. Dit op zichzelf is nooit een goede reden om
as
. te gebruiken , maar in combinatie met de bovenstaande reden is het handig.
Ik zou aanraden om zoiets te doen
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
In het bovenstaande geval, als row
komt terug als DBNull
, dan value
wordt null
in plaats van een uitzondering te gooien. Houd er rekening mee dat als uw DB-query de kolommen/typen verandert die worden geretourneerd, met behulp van as
zal ervoor zorgen dat uw code stil faalt en maak waarden eenvoudig null
in plaats van de juiste uitzondering te genereren wanneer onjuiste gegevens worden geretourneerd, wordt het aanbevolen dat u tests uitvoert om uw zoekopdrachten op andere manieren te valideren om de gegevensintegriteit te waarborgen naarmate uw codebase zich ontwikkelt.