DBNull - это его собственный класс, который содержит единственный экземпляр самого себя в свойстве с именем Значение .DBNull.Value не равно нулю, так как это ссылка на экземпляр этого класса.
Большинство, если не все обертки базы данных, вернут DBNull.Value
вместо null
, когда значение отсутствует.Одна из причин этого заключается в том, что возвращение действительного null
может означать, что строки вообще нет, а не просто нулевое значение в столбце (хотя это зависит от того, какие объекты вы используете для получения значений).
Как правило, оператор as очень полезен с DBNull
и может использоваться с любым типом, допускающим обнуление (включая string
).
string str = reader["Name"] as string;
int? i = reader["Age"] as int?;
Это также может бытьСтоит отметить, что оператор ?? очень полезен и здесь, когда вам нужен необнуляемый тип значения (хотя это выглядит не слишком красиво).
int i = reader["Age"] as int? ?? -1;
Я считаю,это очень удобно, как небольшой сценарий "просто в случае" в предложении LINQ select.