Ну, null
не является экземпляром любого типа.Скорее, это недопустимая ссылка.
Однако System.DbNull.Value
является допустимой ссылкой на экземпляр System.DbNull
(System.DbNull
является одиночным, а System.DbNull.Value
дает ссылку на один экземплярэтого класса), который представляет несуществующие * значения в базе данных.
* Обычно мы говорим null
, но я не хочу путать проблему.
Итак, между ними есть большая концептуальная разница.Ключевое слово null
представляет недопустимую ссылку.Класс System.DbNull
представляет несуществующее значение в поле базы данных.В общем, мы должны стараться избегать использования одной и той же вещи (в данном случае null
) для представления двух совершенно разных концепций (в этом случае недопустимая ссылка по сравнению с несуществующим значением в поле базы данных).
Сохранить впомните, что именно поэтому многие люди рекомендуют использовать шаблон null в целом, что является именно тем, что System.DbNull
является примером.