2013-08-25 203 views
2

我有以下枚舉在我的課:將字符串轉換爲枚舉?

public enum InventoryType 
    { 
     EQUIP = 1, 
     USE = 2, 
     SETUP = 3, 
     ETC = 4, 
     CASH = 5, 
     EVAN = 6, 
     TOTEMS = 7, 
     ANDROID = 8, 
     BITS = 9, 
     MECHANIC = 10, 
     HAKU = 11, 
     EQUIPPED = -1 
    } 

現在,我有一個字段:

public InventoryType InventoryType { get; private set; } 

我從MySQL加載數據。 MySql類型的列有一個是InventoryType的字符串。如何將我得到的字符串轉換爲枚舉InventoryType?

我想:

this.InventoryType = reader.GetString("type"); 

當然但是,這是不行的,因爲它是越來越字符串和所需的InventoryType。我能做些什麼來轉換它?謝謝。

+0

[字符串轉換回枚舉]的可能重複(http://stackoverflow.com/questions/5421263 /轉換字符串返回到枚舉) – dasblinkenlight

+0

檢查http://stackoverflow.com/questions/16100/how-do-i-convert-a-string-to-an-enum-in-c – Nalaka526

回答

3

您可以使用Enum.Parse到您的字符串解析回枚舉值 -

this.InventoryType = (InventoryType)Enum.Parse(typeof(InventoryType), 
               reader.GetString("type")); 

此外,使用Parse如果您確定值將是有效的;否則使用TryParse

+2

你會需要投到'InventoryType'以及... –

+0

@Jon Skeet - Ofcourse,錯過了它。謝謝:) –

+1

@RohitVats你也錯過'InventoryType'後的')'。 –

5

可以使用Enum.TryParse解析它:

InventoryType inventoryType; 
if(Enum.TryParse(reader.GetString("type"), out inventoryType)) 
{ 
    //use inventoryType 
} 
else 
{ 
    //not valid 
} 
+2

您應該能夠省略'',因爲它可以從'inventoryType'變量中推斷出來。 – nmclean

+0

@nmclean - 是的你是對的,謝謝。 – Lee

0

試試這個: -

this.InventoryType= (InventoryType) Enum.Parse(typeof(InventoryType), reader.GetString("type")); 
+0

我不能在enum delcartion:string的末尾使用? – user2714359

+0

不,你不能! –