Редактировать: Просто, чтобы быть ясным, я не спрашиваю (Null
против DBNull.Value
) или (IsDBNull
против IsNull
).IsDBNull vs DBNull.Value, они одинаковы?
Ну, я всегда использую IsDBNull()
для оценки полой базы данных и проверить, если значение DBNull
, но я заметил, что во многих примерах кода, люди используют DBNull.Value
для той же цели. Вот как:
If IsDBNull(obj) Then DoSomething() ' ---> My approach
If obj = DBNull.Value Then DoSomething() ' ---> Theirs.
Также в C#:
if (obj == DBNull.Value) {DoSomething();}
Я сделал некоторые поиск, чтобы узнать, если они одинаковы или, если есть какая-то разница между ними, но не может найти какие-либо полезные статьи которые показывают эти два конкретных подхода оценки вместе.
This MSDN link демонстрирует, как DBNull.Value.Equals
делает то же самое, как IsDBNull
функции, но никогда не упоминает/предлагает использовать DBNull.Value
для оценки, без использования Equals
функции.
Итак, мне действительно интересно, есть ли какая-либо фактическая разница между этими двумя, чтобы один из них был рекомендован другому? Или они делают то же самое?
Эта вторая строка должна использовать 'Is', а не' = ', но, кроме того, они функционально эквивалентны. Этот метод IsDBNull, вероятно, использует этот второй метод внутри. – jmcilhinney
[Вот реализация .Net.] (Https://github.com/Microsoft/referencesource/blob/master/System.Data/System/Data/SqlClient/SqlDataReader.cs#L2917) –
@WillRay, то есть реализация метода 'SqlDataReader.IsDBNull', который не указан в вопросе. Метод в приведенном выше коде «Microsoft.VisualBasic.Information.IsDBNull». – jmcilhinney