Nullbara typer är bra, men bara för typer som inte är nullbara till att börja med.
För att göra en typ "nullbar" lägg till ett frågetecken till typen, till exempel:
int? value = 5;
Jag skulle också rekommendera att använda "as
" nyckelord istället för casting. Du kan bara använda nyckelordet "som" på nullbara typer, så se till att du castar saker som redan är nullbara (som strängar) eller så använder du nullbara typer som nämnts ovan. Resonemationen för detta är
- Om en typ är nullbar visas "
as
" nyckelord returnerarnull
om ett värde ärDBNull
. - Det går lite snabbare än att kasta men bara i vissa fall. Detta i sig är aldrig en tillräckligt bra anledning att använda
as
, men tillsammans med anledningen ovan är det användbart.
Jag skulle rekommendera att du gör något liknande
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
I fallet ovan, om row
kommer tillbaka som DBNull
, sedan value
blir null
istället för att göra ett undantag. Tänk på att om din DB-fråga ändrar kolumnerna/typerna som returneras, med as
kommer att få din kod att tyst misslyckas och gör värden enkla null
istället för att göra det lämpliga undantaget när felaktig data returneras, så det rekommenderas att du har tester på plats för att validera dina frågor på andra sätt för att säkerställa dataintegritet när din kodbas utvecklas.