En C, enums
, équivaut en interne à un entier. Par conséquent, nous pouvons également traiter les types de données de enum
comme un entier.
Comment réaliser la même chose avec C #?
Il suffit de le lancer dans un int
, comme ci-dessous:
int eValue = (int)enumValue;
Voici un autre exemple qui vous montre comment configurer leurs valeurs entières internes:
public enum MyEnum
{
MyValue1 = 1,
MyValue2 = 2
}
(int)MyEnum.MyValue2 == 2; // True
Une autre façon de convertir un Enum-Type en 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
}
Plus complexe mais indépendant des valeurs INT affectées aux valeurs enum.
Par défaut, le type sous-jacent de chaque élément de l'énumération est un entier.
enum Values
{
A,
B,
C
}
Vous pouvez également spécifier une valeur personnalisée pour chaque élément:
enum Values
{
A = 10,
B = 11,
C = 12
}
int x = (int)Values.A; // x will be 10;
Remarque: Par défaut, le premier énumérateur a la valeur 0.
Vous pouvez le lancer directement:
enum MyMonthEnum { January = 1, February, March, April, May, June, July, August, September, October, November, December };
public static string GetMyMonthName(int MonthIndex)
{
MyMonthEnum MonthName = (MyMonthEnum)MonthIndex;
return MonthName.ToString();
}
Par exemple:
string MySelectedMonthName=GetMyMonthName(8);
//then MySelectedMonthName value will be August.
Utilisez un casting:
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);
}
}