Типовете с нулеви стойности са добри, но само за типове, които не могат да бъдат обнулявани в началото.
За да направите тип „с нулеви стойности“, добавете въпросителен знак към типа, например:
int? value = 5;
Бих препоръчал също да използвате „as
" ключова дума вместо прехвърляне. Можете да използвате ключовата дума "as" само за нулеви типове, така че се уверете, че предавате неща, които вече са нулирани (като низове) или използвате типове с нула, както е споменато по-горе. Причината за това е
- Ако типът може да бъде нула, „
as
" ключова дума връщаnull
ако стойността еDBNull
. - Това е много-малко по-бързо от кастинга, но само в определени случаи. Това само по себе си никога не е достатъчно добра причина да използвате
as
, но заедно с причината по-горе е полезно.
Бих препоръчал да направите нещо подобно
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
В горния случай, ако row
се връща като DBNull
, след това value
ще стане null
вместо да хвърлят изключение. Имайте предвид, че ако вашата DB заявка промени връщаните колони/типове, използвайки as
ще доведе до безшумен отказ на кода ви и направете стойностите прости null
вместо да хвърляте подходящото изключение, когато се връщат неправилни данни, така че се препоръчва да имате тестове, за да потвърдите заявките си по други начини, за да гарантирате целостта на данните с развитието на вашата кодова база.