Подтвердить что ты не робот

Что я должен использовать для сравнения DBNull? Использование DBNull.Value или ToString(). IsNullOrEmpty()

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

Либо используя

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

или делая

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

В обоих случаях я получаю одинаковый результат.

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

4b9b3361

Ответ 1

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

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

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

  • Ваше значение - DBNull
  • Ваше значение - это пустая строка

Ответ 2

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

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

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

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

if (dr[0] is DBNull)
{
}

Ответ 3

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

dr[0].IsNull(0) 

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

Ответ 4

Самый простой способ

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

отлично и читаемо.

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