Tengo una IDataRecord reader
que estoy recuperando un decimal a partir de la siguiente manera:¿Por qué no puedo unbox un int como un decimal?
decimal d = (decimal)reader[0];
Por alguna razón esto se produce una excepción reparto no válido decir que la "conversión especificada no es válida."
Cuando lo hago reader[0].GetType()
me dice que es un Int32. Por lo que sé, esto no debería ser un problema ...
He probado esto con este fragmento que funciona muy bien.
int i = 3750;
decimal d = (decimal)i;
Esto me ha dejado rascándose la cabeza preguntándose por qué está fallando a desempacar INT contenido en el lector como un decimal.
¿Alguien sabe por qué esto podría estar ocurriendo? ¿Hay algo sutil que me estoy perdiendo?
En cierto sentido, es una pena que el unboxing y la fundición sean sintácticamente idénticos, ya que son operaciones muy diferentes. – jerryjvl
Gracias Mehrdad. Su explicación y enlace al blog de Eric fue bastante útil. – mezoid
¡Gracias! Esto me lanzó a un bucle. – Darryl