2010-06-22 9 views
5

Tengo la siguiente enumeraciónenumeración Conversión a int

public enum TESTENUM 
{ 
    Value1 = 1, 
    Value2 = 2 
} 

entonces yo quiero usar esto para comparar a una variable entera que tengo, así:

if (myValue == TESTENUM.Value1) 
{ 
} 

Pero con el fin de hacer esta prueba tengo que echar la enumeración de la siguiente manera (o presumiblemente declarar el número entero como tipo de enumeración):

if (myValue == (int) TESTENUM.Value1) 
{ 
} 

¿hay una manera que puedo decir la compil ¿Es que la enumeración es una serie de números enteros, de modo que no tengo que hacer este molde o redefinir la variable?

+3

¿por qué quieres hacer eso? –

Respuesta

12

No. Usted tiene que emitir el valor de enumeración. Si no desea emitir, a continuación, considere el uso de una clase con valores int constantes:

class static EnumLikeClass 
{ 
    public const int Value1 = 1; 
    public const int Value2 = 2; 
} 

Sin embargo, hay algunas desventajas de este; la falta de seguridad tipo es una gran razón para usar el enum.

+4

Gracias por el voto a favor. ¿Siente ganas de perder puntos hoy, o tiene alguna razón específica para hacerlo que le gustaría compartir? – codekaizen

+1

+1 Buena respuesta. No solo proporcionó la respuesta "Necesita arrojar el valor enum", sino que también proporcionó una alternativa que podría ser adecuada para @ pm_2. Quien lo rechazó debería proporcionar una razón. Tal vez fue el uso del nombre de clase TestEnum para algo que no es una enumeración. Es posible que nunca lo sepamos. Lo que sea, no valía la pena un voto negativo. –

+0

@Daniel - buen punto, tal vez es el nombre de la clase incorrecta. ¡Allí lo arreglé! – codekaizen

1

No, no (a diferencia de C++), y por una buena razón de seguridad tipo.

2

Se puede decir que la enumeración que contiene números enteros:

public enum TESTENUM: int 
{ 
    Value1 = 1, 
    Value2 = 2 
} 

Sin embargo hay que echarlos todavía manualmente,

+2

Aún necesita lanzar. – codekaizen

+7

Todas las enumeraciones son int por defecto. –

+0

no es necesario que proporcione: Int como está por defecto. – Chinjoo

2

Tenga en cuenta que el valor de enumeración en su contexto es exactamente cómo le dice al compilador que "mire aquí, sé que este valor enum es de tipo int, así que úselo como tal".