Получить имя перечисления, когда значение известно - PullRequest
34 голосов
/ 25 июля 2010

У меня есть enum с разными цветами.Я хотел бы передать некоторую функцию int и вернуть ей имя цвета, которое находится в перечислении в этой позиции.

Как это сделать?

Ответы [ 6 ]

72 голосов
/ 25 июля 2010
return ((MyEnumClass)n).ToString();
55 голосов
/ 25 июля 2010

Другой вариант - использовать статический метод GetName:

Enum.GetName(typeof(MyEnumClass), n);

Преимущество этого кода в том, что он говорит сам за себя.Должно быть очевидно, что он возвращает имя перечисления (что может быть немного трудно реализовать, когда вы используете, например, метод ToString).

14 голосов
/ 10 ноября 2015

В c # 6 вы можете использовать nameof.

nameof(YourEnum.Something)

Результат:

something
7 голосов
/ 25 июля 2010

Если ваше перечисление с цветами называется MyColorEnumName, попробуйте

Enum.GetName(typeof(MyColorEnumName),  enumColorValue)
2 голосов
/ 25 июля 2010

Если вы заботитесь о производительности, остерегайтесь использовать любое из приведенных здесь предложений: все они используют отражение, чтобы задать строковое значение для перечисления.Если вам больше всего нужно строковое значение, лучше использовать строки.Если вам все еще требуется безопасность типов, определите класс и коллекцию для определения своих «перечислений», и пусть класс отображает свое имя в переопределении ToString ().

0 голосов
/ 01 сентября 2017

Ниже приведен пример получения имени Enum на основе значения цвета.

  class Program
     {
          //Declare Enum
          enum colors {white=0,black=1,skyblue=2,blue=3 }
      static void Main(string[] args)
        {
          // It will return single color name which is "skyblue"
             string colorName=Enum.GetName(typeof(colors),2);

          //it will returns all the color names in string array.
          //We can retrive either through loop or pass index in array.
             string[] colorsName = Enum.GetNames(typeof(colors));

         //Passing index in array and it would return skyblue color name
             string colName = colorsName[2];

             Console.WriteLine(colorName);
             Console.WriteLine(colName);
             Console.ReadLine();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...