Изменить. Чтобы было ясно, я не спрашиваю о (Null
против DBNull.Value
) или (IsDBNull
против IsNull
).
Ну, я всегда использую IsDBNull()
для оценки полей базы данных и проверки, равно ли значение DBNull
, но я заметил, что во многих примерах кода люди используют DBNull.Value
для той же цели. Вот как:
If IsDBNull(obj) Then DoSomething() ' ---> My approach
If obj = DBNull.Value Then DoSomething() ' ---> Theirs.
Также в С#:
if (obj == DBNull.Value) {DoSomething();}
Я провел поиск, чтобы выяснить, являются ли они одинаковыми или между ними есть какая-либо разница, но не смог найти никаких полезных статей, в которых бы показывались эти два конкретных подхода к оценке вместе.
Эта ссылка MSDN демонстрирует, как DBNull.Value.Equals
делает то же самое, что и функция IsDBNull
, но никогда не упоминает/не предлагает использовать DBNull.Value
для оценки без использования функции Equals
.
Итак, мне действительно интересно, есть ли какая-то реальная разница между этими двумя, чтобы один из них рекомендовался другому? Или они делают одно и то же?
Is
, а не=
, но, кроме этого, они функционально эквивалентны. Этот методIsDBNull
, вероятно, использует этот второй метод внутри. - person jmcilhinney   schedule 16.02.2017SqlDataReader.IsDBNull
, который не указан в вопросе. Метод в приведенном выше коде —Microsoft.VisualBasic.Information.IsDBNull
. - person jmcilhinney   schedule 16.02.2017Trim(str)
, он не может быть переведен конвертерами. Но если вы используетеstr.Trim()
, он преобразуется в С#. Чтобы ответить на ваш вопрос, достаточно скачать бесплатный дизассемблер и посмотреть код функции. Но вы действительно не должны беспокоиться о том, что делаетIsDbNull
, потому что вы должны использоватьDBNull.Value.Equals
- person T.S.   schedule 16.02.2017IsDBNull
, иDBNull.Value.Equals
делают одно и то же. Также некоторые функции VB действительно пригодятся и станут более удобочитаемыми. Microsoft сообщает в приведенной выше ссылке MSDN: Однако этот метод редко используется, поскольку существует ряд других способов оценить поле базы данных на предмет отсутствующих данных. К ним относится функция Visual Basic IsDBNull.... Примечание: я не используюTrim(str)
, если только это не VB6: D - person 41686d6564   schedule 16.02.2017if (obj == DBNull.Value) {DoSomething();}
в C# точно эквивалентенIf obj Is DBNull.Value Then DoSomething()
в VB. - person jmcilhinney   schedule 16.02.2017