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 retourneertnullals 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.