2009-12-26 148 views
16

我正在使用基本的Battleship game來幫助我的C#技能。現在我在枚舉中遇到了一些麻煩。我有:從枚舉中獲取整數值

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

我想玩家通過輸入「C」和一些代碼返回整3。我如何設置它爲它採取一個字符串變種(string pick;)並使用此枚舉將其轉換爲正確的int?我在讀這本書是有點混淆

+2

這是不好的做法,用枚舉比'int'其他和'int'是默認的,所以你不需要讓它明確的底層類型。只是說。 – 2009-12-26 18:38:37

+2

不是你的問題「從字符串中獲取枚舉值」? – knoopx 2009-12-26 18:40:52

回答

39

只解析字符串並轉換爲int。

var number = (int)((game) Enum.Parse(typeof(game), pick)); 
+0

非常感謝 – Anthony 2009-12-26 18:42:57

+0

我看到了類似的效果(int)(遊戲)選擇表達式 – 2012-08-25 17:29:03

+1

什麼是「挑」在這裏? – gdmanandamohon 2017-07-21 10:52:37

4

只是類型轉換?

int a = (int) game.a 
+0

不 - 這不是OP要找的。 – Jeff 2010-11-28 14:50:24

+0

正是我需要的,謝謝! – Jamie 2017-03-16 14:45:31

12
// 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; 
3

如果你不知道傳入的字符串將包含一個有效的枚舉值,你可以使用Enum.TryParse()嘗試做解析。如果它無效,這隻會返回false,而不是拋出異常。

jp

0

答案很好,但語法很混亂。

更整潔是這樣的:

public DataSet GetBasketAudit(enmAuditPeriod auditPeriod) 
    { 
     int auditParam =Convert.ToInt32(auditPeriod) ;