What should I use to compare DBNull ? Using DBNull.Value or ToString().IsNullOrEmpty()
Question
I can check for a DBnull
on a data row using any of the methods.
Either by using
if(dr[0][0]==DBNull.Value)
//do somethin
or by doing
if(dr[0][0].ToString().IsNullOrEmpty())
//do something
In Both Cases I will be getting same result.
But Which one is conecptually right approach. Which was will use less resources
La solution
The first way is somewhat correct. However, more accepted way is:
if ( dr[0][0] is DBNull )
And the second way is definitely incorrect. If you use the second way, you will get true in two cases:
- Your value is DBNull
- Your value is an empty string
Autres conseils
Conceptually the comparison to DBNull.Value
is the correct one.
You can also use :
if (Convert.IsDBNull(dr[0]))
{
}
You could also use, which I'm not a fan of, purely because it's a type comparison rather than a value comparison:
if (dr[0] is DBNull)
{
}
Is always use :
dr[0].IsNull(0)
Assuming that the creators of this function know the best way/most efficient way of comparing..
The simplest way
if (dr[0][0] == DBNull.Value)
//do somethin
is perfectly valid and readable.
Even though ==
compares references, it works here because DBNUll.Value
is the only instance of DBNull
class - so all DBNull
values are actually this exact reference.