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
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
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.
来源:https://stackoverflow.com/questions/3393958/what-should-i-use-to-compare-dbnull-using-dbnull-value-or-tostring-isnullore