4

可能重复:
如何在 C# 中将字符串转换为枚举?
枚举返回 int 值

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

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

现在我需要它匹配的 enum 的 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

4 回答 4

6

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

然后只需转换为整数:

var iAsInteger = (Int32)i;
于 2012-04-18T17:00:24.280 回答
3

只需将您的枚举转换为 int like

int i=(int)Car.Audi;

这会给你 1

int i=(int)Car.Select;

这会给你0

于 2012-04-18T17:01:33.267 回答
3
var result = (int)System.Enum.Parse(typeof(Car), carName)

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

这将替换您的GetCarType功能。您不再需要遍历枚举名称。

于 2012-04-18T17:02:24.233 回答
1
int i = (int) Enum.Parse(typeof(Car), "AUDI");
于 2012-04-18T17:06:02.173 回答