将字符串转换为枚举?

时间:2013-08-25 15:35:08

标签: c#

我班上有以下枚举:

  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。我该怎么做才能转换它?感谢。

3 个答案:

答案 0 :(得分:5)

您可以使用Enum.TryParse解析它:

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

答案 1 :(得分:3)

您可以使用Enum.Parse将字符串解析回枚举值 -

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

另外,如果您确定该值有效,请使用Parse;否则使用TryParse

答案 2 :(得分:0)

试试这个: -

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