Observé un problema extraño en un fragmento de código donde una consulta adhoc SQL no producía el resultado esperado, aunque sus parámetros coincidían con los registros en la fuente de datos. Decidí entrar en la expresión de prueba siguiente en la ventana inmediata:¿Por qué el constructor de nombre/valor SqlParameter trata 0 como nulo?
new SqlParameter("Test", 0).Value
Se obtuvo un resultado de null
, lo que me deja rascándome la cabeza. Parece que el constructor SqlParameter
trata los ceros como nulos. El siguiente código produce el resultado correcto:
SqlParameter testParam = new SqlParameter();
testParam.ParameterName = "Test";
testParam.Value = 0;
// subsequent inspection shows that the Value property is still 0
¿Alguien puede explicar este comportamiento? ¿Es de alguna manera intencional? Si es así, es potencialmente bastante peligroso ...
Lectura adicional sobre este tema: http://stackoverflow.com/questions/14224465/compiler-value-type-resolution-and-hardcoded-0-integer-values – RLH