Перечислим в Int. Int в Enum. Лучший способ сделать преобразование? - PullRequest
2 голосов
/ 26 января 2010
 public Enum Days
 {
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
 }

Теперь я хотел узнать, как получить целочисленное значение перечисления и преобразовать целочисленное значение в перечисление

Будет

       int dayNo = (int) Days.Monday;

изменить значение dayNo на 1;

и

Будет

        Days day = (Days) 2;

назначить Days.Tuesday переменной день ??

Как насчет этого - лучший способ сделать синтаксический анализ ??

Ответы [ 5 ]

7 голосов
/ 26 января 2010

Да, и это очень легко проверить:

Days d = (Days)3;
Console.WriteLine(d);

Это приведет к выводу

Wednesday

В качестве лучшей практики имя вашего enum должно быть Day не Days;Переменная d выше представляет Day, а не Days.См. правила именования в MSDN.

6 голосов
/ 26 января 2010

Да, это будет именно так, за исключением 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());

... оба дают вам среду.

4 голосов
/ 26 января 2010

Одним словом, да .

2 голосов
/ 26 января 2010

Ваше понимание перечислений верно.

Вы можете использовать Enum.Parse для преобразования из числа / имени в тип enum, если вы чувствуете себя более комфортно с этим методом, но он ничего не получает в удобочитаемости или производительности.

Странно, чтобы разобрать номера, сначала нужно вызвать 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.
1 голос
/ 26 января 2010

Да, будет. Но пробовали ли вы это перед публикацией?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...