public Enum Days
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
}
Теперь я хотел знать, как получить целочисленное значение перечисления и преобразовать целочисленное значение в enum
Воля
int dayNo = (int) Days.Monday;
измените значение dayNo на 1;
и
Воля
Days day = (Days) 2;
назначить Days.Tuesday переменному дню??
Как это лучший способ сделать синтаксический анализ?
Да, он будет делать именно это, кроме Enum
должен быть Enum
public enum Days
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
}
Чтобы использовать Enum.Parse, вы ДОЛЖНЫ предоставить строку, поэтому, если вы хотите отбросить из int, вам придется пройти через строку, которая является уродливой.
Days x = (Days)Enum.Parse(typeof(Days), "3");
Days y = (Days)Enum.Parse(typeof(Days), 3.ToString());
... обе дают вам среду.
Да, и это очень легко проверить:
Days d = (Days)3;
Console.WriteLine(d);
Это приведет к выводу
Wednesday
Как наилучшая практика, имя вашего enum
должно быть Day
not Days
; переменная d
выше представляет a Day
not Days
. См. правила именования в MSDN.
Одним словом, да.
Ваше понимание перечислений правильно.
Вы можете использовать Enum.Parse для преобразования из числа/имени в тип перечисления, если вы чувствуете себя более комфортно с этим методом, но он получает ничего в работоспособности и производительности.
Как ни странно, для разбора чисел вам нужно сначала вызвать ToString()
, так как Enum.Parse
не имеет целочисленной перегрузки.
На странице MSDN:
Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object.
Enum.Parse
НЕ конвертирует из int
в соответствующее значение enum
. Этот ответ в лучшем случае неверен или вводит в заблуждение.
Да, будет. Но вы пробовали его перед публикацией?
DayOfWeek
: msdn.microsoft.com/en-us/library/system.dayofweek.aspx