2013-06-25 66 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())); 
} 

我無法弄清楚如何得到這個枚舉爲重點的INT部分...很愚蠢的問題我敢肯定,但我無法得到它的工作。

我指的this文章在這裏的計算器,但你可以看到這不起作用

所以,我怎麼能得到枚舉的int值?

編輯:當我嘗試編譯,我得到了以下錯誤消息「無法將類型‘System.Enum’到‘廉政’」

+0

對不起,目前尚不清楚:* *什麼是不是在上面的代碼工作?另外,你可以使KeyValuePair的鍵類型爲'FontStyle'而不是'int'嗎? –

+0

把這個值作爲一個int來處理應該照顧它。驚訝的是不工作。 –

+0

@DanJ對不起,它只是不編譯錯誤信息「無法將類型'System.Enum'轉換爲'int'」。我將編輯問題 –

回答

4

你應該在FontStyle改變你的循環語句循環,不Enum

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

或者使用implicit typed variablevar關鍵字:

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

這就是它......只是修正拼寫錯誤'FontStylevalue'到'FontStyle值',我將盡快標記爲答案 –

0

如果你想獲得的枚舉名稱從值?yes意味着,只需調用Enum.GetName(typeof(yourtype),value)。嘗試使用var關鍵字。

0

這將工作:

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