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

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

  •  08-10-2020
  •  | 
  •  

Вопрос

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:

  1. Your value is DBNull
  2. 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top