如何将字符串转换为枚举值为整数?

时间:2012-04-18 16:59:31

标签: c# enums

  

可能重复:
  How do I Convert a string to an enum in C#?
  Enums returning int value

我已经声明了一个枚举: -

public enum Car
        {
            SELECT = 0,
            AUDI = 1,
            NISSAN = 2,
            HONDA = 3,
            LINCOLN = 4
        } 

现在我需要枚举的枚举的int值: -

private int GetCarType(string CarName)
        {
            foreach(var item in Enum.GetNames(typeof(Car))
            {
                if (item.ToLower().Equals(CarName.ToLower()))
                    //return int value of Enum of matched item; ???????
            }

预期结果: -

int i = GetCarType(CarName); //suppose CarName is AUDI, it should return 1;
Console.write(i);

Result :- 1

我如何获得枚举的价值?更好的编码实践。

4 个答案:

答案 0 :(得分:6)

如果要将字符串转换为枚举,则应使用Enum.Parse而不是遍历名称。

然后转换为整数:

var iAsInteger = (Int32)i;

答案 1 :(得分:3)

简单地将你的枚举转换为int,如

int i=(int)Car.Audi;

这将给你1

int i=(int)Car.Select;

这会给你0

答案 2 :(得分:3)

var result = (int)System.Enum.Parse(typeof(Car), carName)

http://msdn.microsoft.com/en-us/library/essfb559.aspx

这取代了您的GetCarType功能。您不再需要迭代枚举名称。

答案 3 :(得分:1)

int i = (int) Enum.Parse(typeof(Car), "AUDI");