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

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

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

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

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个回答

6
如果您要将字符串转换为枚举类型,应该使用Enum.Parse而不是遍历名称。
然后只需将其强制转换为整数:
var iAsInteger = (Int32)i;

你是指“字符串转枚举”吗? - Oskar Kjellin

3

3

只需将您的枚举类型转换为整数,如下所示:

int i=(int)Car.Audi;

这将给你 1。
int i=(int)Car.Select;

这将会给你一个0


首先你得匹配.. 我不知道CarName的值是多少.. - user1327064
@user1327064 你不知道吗?我没听懂你的意思。 - Devjosh
@DevJob:Robert Harvey已经回答了我的问题。你的不适用。 - user1327064
@user1327064,我很高兴Mark的回答能帮助到你。如果将其标记为答案,它将有助于其他同行。 - Devjosh

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

是的,3分钟。我打字比较慢 :-) - David Brabant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接