Что я должен использовать для сравнения DBNull? Использование DBNull.Value или ToString(). IsNullOrEmpty()
Я могу проверить DBnull
на строке данных с помощью любого из методов.
Либо используя
if(dr[0][0]==DBNull.Value)
//do somethin
или делая
if(dr[0][0].ToString().IsNullOrEmpty())
//do something
В обоих случаях я получаю одинаковый результат.
Но какой из них имеет правильный подход. Что будет использовать меньше ресурсов
Ответы
Ответ 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
на самом деле являются этой точной ссылкой.