Вопрос студента сегодня пришёлся очень ко двору и в тему семинара (обобщения). Разбирались не долго, но мне вперёд наука: обращать внимание на дьявола в деталях.
У студента в курсовой работе 20 перечислений (Enum). Ему очень хотелось получать целочисленное значение, связанное с константой перечисления. Казалось бы какие сложности, явное приведение типа к int и всё. Но нет, проблема была не в этом. Имя константы получалось из строки, поэтому сначала надо было выбрать нужную константу, а затем уже получить её целочисленный код.
Естественно, проблема элементарно гуглится, и находится уйма ответов.
Здесь записываю пример, который я написала для студента, чтобы не забыть и не потерять. Вопрос наверняка ещё не раз возникнет, а может быть использую код на семинарах.
Поскольку я помнила про 20 перечислений, то выбрала обобщённый метод для получения константы перечисления по её имени. Пример с цветами консоли.
У студента в курсовой работе 20 перечислений (Enum). Ему очень хотелось получать целочисленное значение, связанное с константой перечисления. Казалось бы какие сложности, явное приведение типа к int и всё. Но нет, проблема была не в этом. Имя константы получалось из строки, поэтому сначала надо было выбрать нужную константу, а затем уже получить её целочисленный код.
Естественно, проблема элементарно гуглится, и находится уйма ответов.
Здесь записываю пример, который я написала для студента, чтобы не забыть и не потерять. Вопрос наверняка ещё не раз возникнет, а может быть использую код на семинарах.
Поскольку я помнила про 20 перечислений, то выбрала обобщённый метод для получения константы перечисления по её имени. Пример с цветами консоли.
class Program { // получение константы перечисления по её названию public static T EnumParse(string str) { return (T)Enum.Parse(typeof(T), str, true); } static void Main(string[] args) { ConsoleColor myColor; foreach (string s in str) { try { myColor = EnumParse (s); Console.ForegroundColor = myColor; Console.WriteLine(s); } catch (ArgumentException ex) { continue; // переходим к следующему элементу } } // получение номера константы перечисления // int x = (int)myColor; // Console.Write(x); } } }
Комментариев нет:
Отправить комментарий