Почему конструктор имени / значения SqlParameter рассматривает 0 как null?

Я обнаружил странную проблему в фрагменте кода, когда специальный запрос SQL не давал ожидаемого результата, даже если его параметры совпадали с записями в источнике данных. Я решил ввести в ближайшее окно следующее тестовое выражение:

new SqlParameter("Test", 0).Value

Это дало результат null , что заставило меня почесать голову. Похоже, что конструктор SqlParameter обрабатывает нули как нули. Следующий код дает правильный результат:

SqlParameter testParam = new SqlParameter();
testParam.ParameterName = "Test";
testParam.Value = 0;
// subsequent inspection shows that the Value property is still 0

Кто-нибудь может объяснить такое поведение? Это как-то намеренно? Если так, то это потенциально довольно опасно ...

25
задан Bradley Smith 2 December 2011 в 05:48
поделиться