Получение целочисленного значения из enum - PullRequest
20 голосов
/ 26 декабря 2009

Я работаю над базовой игрой линкора , чтобы помочь моим навыкам C #. Сейчас у меня небольшие проблемы с enum. У меня есть:

enum game : int
{
    a=1,
    b=2,
    c=3,
}

Я бы хотел, чтобы проигрыватель пропустил ввод "C", а некоторый код вернул целое число 3. Как бы настроить его так, чтобы он брал строковую переменную (string pick;) и преобразовывал ее в правильный int, используя это перечисление? Книга, которую я читаю об этом, немного сбивает с толку

Ответы [ 5 ]

50 голосов
/ 26 декабря 2009

Просто разберите строку и приведите к int.

var number = (int)((game) Enum.Parse(typeof(game), pick));
14 голосов
/ 26 декабря 2009
// convert string to enum, invalid cast will throw an exception
game myenum =(game) Enum.Parse(typeof(game), mystring ); 

// convert an enum to an int
int val = (int) myenum;

// convert an enum to an int
int n = (int) game.a; 
5 голосов
/ 26 декабря 2009

просто приведение типа?

int a = (int) game.a
4 голосов
/ 26 декабря 2009

Если вы не уверены, что входящая строка будет содержать допустимое значение перечисления, вы можете использовать Enum.TryParse (), чтобы попытаться выполнить синтаксический анализ. Если он недействителен, он просто вернет false, а не выдает исключение.

JP

0 голосов
/ 04 марта 2016

Ответ в порядке, но синтаксис беспорядочный.

Гораздо аккуратнее что-то вроде этого:

    public DataSet GetBasketAudit(enmAuditPeriod auditPeriod)
    {
        int auditParam =Convert.ToInt32(auditPeriod) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...