2013-06-25 4 views
0

У меня есть следующий кусок кода:Не удается получить значение перечисления из

private List<KeyValuePair<int, string>> _list = new List<KeyValuePair<int, string>>(); 

public MyclassConstructor() 
{ 
    foreach (Enum value in Enum.GetValues(typeof(FontStyle))) 
     _list.Add(new KeyValuePair<int, string>((int)value, value.ToString())); 
} 

Я не могу понять, как получить ИНТ часть этого перечисления в качестве ключа ... довольно немой вопрос Я уверен, но я не могу заставить его работать.

Я имел в виду this статьи здесь, на StackOverflow, но как вы можете видеть, это не работает

Так как я могу получить Int значение перечисления?

Edit: Когда я пытаюсь скомпилировать я получаю следующее сообщение об ошибке «Не удается преобразовать тип„System.Enum“на„Int“»

+0

К сожалению, не ясно: * *, что не работает в коде выше? Кроме того, вы могли бы использовать ключ KeyValuePair типа 'FontStyle' вместо' int'? –

+0

Приведение значения в качестве int должно позаботиться об этом. Удивлен, что не работает. –

+0

@DanJ Извините, он просто не компилируется с сообщением об ошибке «Невозможно преобразовать тип« System.Enum »в« int ». Я отредактирую вопрос –

ответ

4

Вы должны изменить свое заявление петли в петлю над FontStyle, не Enum:

foreach (FontStyle value in Enum.GetValues(typeof(FontStyle))) 

Или с помощью implicit typed variable и var ключевое слово:

foreach (var value in Enum.GetValues(typeof(FontStyle))) 
+0

Это было ... Просто исправьте typo 'FontStylevalue' значением' FontStyle' и я буду отмечать как ответ, как только смогу это сделать –

0

Если вы хотите, чтобы получить имя Enum от значения? yes означает, просто вызовите Enum.GetName (typeof (yourtype), value). Попробуйте использовать var Keyword.

0

Это будет работать:

var _list = Enum.GetValues(typeof(FontStyle)) 
      .Cast<FontStyle>() 
      .Select(x => new KeyValuePair<int, string>((int)x, x.ToString()));