关于C#:如何将字符串转换为枚举值并转换为整数?

How do I convert a string to an enum value to an integer?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I Convert a string to an enum in C#?
Enums returning int value

我已经声明了一个枚举:

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

现在我需要枚举匹配的int值:

1
2
3
4
5
6
7
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; ???????
            }

预期结果:

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

Result :- 1

如何获取枚举值?以及更好的编码实践。


如果要将字符串转换为枚举,则应使用Enum.Parse,而不是对名称进行迭代。

然后转换为整数:

1
var iAsInteger = (Int32)i;


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

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

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


只需将枚举强制转换为int-like

1
int i=(int)Car.Audi;

这会给你1

1
int i=(int)Car.Select;

这会给你0


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