【问题标题】: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# enums


【解决方案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 我很高兴马克的回答帮助您将其标记为答案,这将有助于同行
    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 2015-06-29
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多