如何将字符串转换为枚举值到整数? [复制]

Posted

技术标签:

【中文标题】如何将字符串转换为枚举值到整数? [复制]【英文标题】:How do I convert a string to an enum value to an integer? [duplicate] 【发布时间】:2012-04-30 03:38:08 【问题描述】:

可能重复: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
         

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

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

【问题讨论】:

注意你的套管。遵循 C# 约定。 msdn.microsoft.com/en-us/library/ms229045.aspx @Paul:我看到了你链接的那个问题。我的不是重复的。它与您链接的内容不同。 【参考方案1】:
var result = (int)System.Enum.Parse(typeof(Car), carName)

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

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

【讨论】:

【参考方案2】:

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

然后只转换为整数:

var iAsInteger = (Int32)i;

【讨论】:

你的意思是string to enum【参考方案3】:
int i = (int) Enum.Parse(typeof(Car), "AUDI");

【讨论】:

是的,3 分钟。我打字很慢:-)【参考方案4】:

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

int i=(int)Car.Audi;

这会给你 1

int i=(int)Car.Select;

这会给你0

【讨论】:

首先你必须匹配..我不知道 CarName 的值是什么.. @user1327064 你不知道吗?我没有得到你 @DevJob:罗伯特哈维回答了我的问题。你的不适合.. @user1327064 我很高兴马克的回答帮助您将其标记为答案,这将有助于同行

以上是关于如何将字符串转换为枚举值到整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Django/Python:如何将整数转换为等效的枚举字符串? [复制]

java如何将接收到的数字自动转换为枚举

将PB中的枚举型转化数值型

c++字符串转换为枚举类型

C语言如何将64位整数转字符串

将字符串转换为枚举? [复制]