В C, enums
внутреннее значение равно целому числу. Поэтому мы можем обрабатывать типы данных enum
как целочисленные.
Как добиться того же результата с С#?
В C, enums
внутреннее значение равно целому числу. Поэтому мы можем обрабатывать типы данных enum
как целочисленные.
Как добиться того же результата с С#?
Просто добавьте его в int
, как показано ниже:
int eValue = (int)enumValue;
Вот еще один пример, который показывает, как настроить их внутренние целочисленные значения:
public enum MyEnum
{
MyValue1 = 1,
MyValue2 = 2
}
(int)MyEnum.MyValue2 == 2; // True
Другой способ преобразования Enum-Type в 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
}
Более сложный, но независимый от значений INT, присвоенных значениям перечисления.
По умолчанию базовый тип каждого элемента в перечислении является целым числом.
enum Values
{
A,
B,
C
}
Вы также можете указать настраиваемое значение для каждого элемента:
enum Values
{
A = 10,
B = 11,
C = 12
}
int x = (int)Values.A; // x will be 10;
Примечание. По умолчанию первый счетчик имеет значение 0.
Вы можете напрямую разыграть его:
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();
}
Например:
string MySelectedMonthName=GetMyMonthName(8);
//then MySelectedMonthName value will be August.
Использовать актерский состав:
public enum MyEnum : int {
A = 0,
B = 1,
AB = 2,
}
int val = (int)MyEnum.A;
Используйте простое литье:
int value = (int) enum.item;
Обратитесь к enum (ссылка С#)
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);
}
}