Estoy escribiendo una función que toma un Enum
y lo lanza al uint
. Por lo que he visto al convertir a int
, primero debes convertirlo en un objeto: (int) (object) myEnumValue
. Si escribe (int) myEnumValue
, obtendrá una excepción de tiempo de compilación.Casting Enum to uint
Ahora, cuando traté de lanzarlo a uint, esperaba que (uint) (object) myEnumValue
estaría bien. Se compila muy bien, pero cuando se ejecuta genera un InvalidCastException
. Así que para conseguir que funcione, he utilizado
(uint) (int) (object) myEnumValue
Creo que se ve divertido, así que estoy muy feliz, pero ¿por qué es así?
quizás hubiera sido más correcto para preguntar por qué no es posible lanzar object
a uint
, pero estoy interesado en saber si hay otra manera de pasar de una a Enum
uint
. ¿Esta ahí?
Editar:
El contexto es una función, algo como esto:
public static uint ToUInt (Enum e)
{
return (uint) (int) (object) e;
}
Edición 2:
La mejor solución fue como se ha mencionado por thecoop:
Convert.ToUInt32(e)
Ok, entonces si especifico mi Enum como Enum: uint, ¿sería al revés? –
@Jonatan: sí, eso encajonaría la enumeración como una uy, y se vería obligado a desagrupar como lo hace. –
Correcto: (uint) e estará bien, pero (int) e explotará. –