En C, enums
, internamente equivale a un número entero. Por lo tanto, podemos tratar los tipos de datos de enum
como un número entero también.Cómo obtener el valor del índice Enum en C#
¿Cómo lograr lo mismo con C#?
En C, enums
, internamente equivale a un número entero. Por lo tanto, podemos tratar los tipos de datos de enum
como un número entero también.Cómo obtener el valor del índice Enum en C#
¿Cómo lograr lo mismo con C#?
simplemente echarlo a un int
, como a continuación:
int eValue = (int)enumValue;
Aquí hay otro ejemplo que muestra cómo configurar sus valores enteros internos:
public enum MyEnum
{
MyValue1 = 1,
MyValue2 = 2
}
(int)MyEnum.MyValue2 == 2; // True
Utilice un reparto:
public enum MyEnum : int {
A = 0,
B = 1,
AB = 2,
}
int val = (int)MyEnum.A;
using System;
public class EnumTest
{
enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
static void Main()
{
int x = (int)Days.Sun;
int y = (int)Days.Fri;
Console.WriteLine("Sun = {0}", x);
Console.WriteLine("Fri = {0}", y);
}
}
Por defecto, el tipo subyacente de cada elemento en la enumeración es entero.
enum Values
{
A,
B,
C
}
También puede especificar valor personalizado para cada elemento:
enum Values
{
A = 10,
B = 11,
C = 12
}
int x = (int)Values.A; // x will be 10;
Nota: Por defecto, la primera empadronador tiene el valor 0.
Otra manera de convertir una enumeración de tipo de un int:
enum E
{
A = 1, /* index 0 */
B = 2, /* index 1 */
C = 4, /* index 2 */
D = 4 /* index 3, duplicate use of 4 */
}
void Main()
{
E e = E.C;
int index = Array.IndexOf(Enum.GetValues(e.GetType()), e);
// index is 2
E f = (E)(Enum.GetValues(e.GetType())).GetValue(index);
// f is E.C
}
más complejo, pero independiente de los valores INT asignados a los valores de enumeración.
Esta es una respuesta mejor que la aceptada (o las muchas otras respuestas similares) desde todos parecen suponer que sus valores enum están asignados con valores numéricos secuenciales y que a menudo eso no es el caso. –
Puede convertir directamente:
enum MyMonth { January = 1, February, March, April, May, June, July, August, September, October, November, December };
public static string MyMonthList(int MonthIndex)
{
MyMonth MonthName = (MyMonth)MonthIndex;
return MonthName.ToString();
}
Por ejemplo:
string MySelectedMonthName=MyMonthList(12);
//then MySelectedMonthName value will be August.
duplicado: http://stackoverflow.com/questions/29482/cast-int-to-enum-in- c (ah, y enum to int es solo un yeso como otro respondió) – Dmitry
@Dmitry: Parece que la otra publicación es en realidad la inversa :) –