(любая == Система.DBNull.Значение) vs (любое - это Система.DBNull)

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

  •  01-07-2019
  •  | 
  •  

Вопрос

Есть ли у кого-нибудь предпочтения относительно того, как проверить, является ли значение DBNull?Я обнаружил, что эти два утверждения дают мне желаемые результаты, но просто интересно, есть ли какие-то предпочтения?

if (any is System.DBNull)

то же самое , что:

if (any == System.DBNull.Value)

Спасибо!

Это было полезно?

Решение

if (any == System.DBNull.Value) ...

Я предпочитаю этот вариант просто потому, что я читаю это как сравнение значений, а не типов.

Другие советы

Я склонен использовать

if (DBNull.Value.Equals(value)) {
    //
}

или

if (Convert.IsDBNull(value)) {
    //
}

is не использует отражение, как говорит Kevlar623.Это соотносится с isinst операция в Иллинойсе.На этом уровне сравнивать характеристики совершенно глупо, если только вы не работаете над системой наведения ракеты.

Я использую value is DBNull. Это просто звучит правильно, и как разработчик-параноик, я не могу поверить, что единственная ценность, когда-либо существовавшая, - это DBNull.Value.Ошибки случаются.

если вы работаете на c #, вам следует использовать ==; is использует отражение, которое более затратно в вычислении, тем более что существует только один экземпляр System.DBNull.

Мне нравится система "есть".DBNull" больше потому, что мне ненавистна идея сравнивать что-то с NULL и делать так, чтобы это было правдой.Многие другие синтаксисы (что, черт возьми, это за множественное число?) имели бы значение anything==NULL, возвращающее значение NULL.

Я понимаю, что есть DBNull.Ценность по какой-то причине.Я знаю.Я перечисляю свои ПРЕДПОЧТЕНИЯ :)

Это хороший пример того, как форма следует за функцией.Какой бы из них ни выполнялся более эффективно, это правильный путь.То, как это выглядит, читается или какими плохими именами оно вас называет, не имеет значения.Используйте язык эффективно, не превращайте его в новый.

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