What should I use to compare DBNull ? Using DBNull.Value or ToString().IsNullOrEmpty()

StackOverflow https://stackoverflow.com/questions/3393958

  •  08-10-2020
  •  | 
  •  

Pregunta

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

¿Fue útil?

Solución

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:

  1. Your value is DBNull
  2. Your value is an empty string

Otros consejos

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top