Что я должен использовать для сравнения DBNull?Использование DBNull.Value или ToString (). IsNullOrEmpty () - PullRequest
20 голосов
/ 03 августа 2010

Я могу проверить DBnull в строке данных любым из методов.

Либо с помощью

if(dr[0][0]==DBNull.Value)
//do somethin

, либо с помощью

if(dr[0][0].ToString().IsNullOrEmpty())
//do something

В обоих случаях я получу один и тот же результат.

Но какой из них является подходящим подходом.Который был использовать меньше ресурсов

Ответы [ 4 ]

18 голосов
/ 03 августа 2010

Первый способ несколько правильный. Однако более приемлемый способ:

if ( dr[0][0] is DBNull )

И второй путь определенно неверен. Если вы воспользуетесь вторым способом, вы получите истину в двух случаях:

  1. Ваше значение DBNull
  2. Ваше значение - пустая строка
6 голосов
/ 03 августа 2010

Концептуально сравнение с DBNull.Value является правильным.

Вы также можете использовать:

if (Convert.IsDBNull(dr[0]))
{
}

Вы также можете использовать, чем я не фанат, просто потому, что это сравнение типов, а не сравнение значений:

if (dr[0] is DBNull)
{
}
0 голосов
/ 05 января 2017

Простейший способ

if (dr[0][0] == DBNull.Value)
//do somethin

совершенно допустим и удобочитаем.

Несмотря на то, что == сравнивает ссылки, он работает здесь, потому что DBNUll.Value - единственный экземплярDBNull class - так что все значения DBNull на самом деле являются точной ссылкой.

0 голосов
/ 04 августа 2010

Всегда используется:

dr[0].IsNull(0) 

Предполагая, что создатели этой функции знают лучший / самый эффективный способ сравнения ..

...