C# 如何将字符串转换为int类型的枚举?

C# 如何将字符串转换为int类型的枚举?,c#,enumeration,C#,Enumeration,可能重复: 我有一个int类型的枚举: public enum BlahType { blah1 = 1, blah2 = 2 } 如果我有一个字符串: string something = "blah1" 如何将其转换为BlahType?您想要什么 我使用这样一个函数 public static T GetEnumValue<T>(string value) { return (T)Enum.Parse(typeof(T), value);

可能重复:

我有一个int类型的枚举:

public enum BlahType
{
       blah1 = 1,
       blah2 = 2
}
如果我有一个字符串:

string something = "blah1"
如何将其转换为BlahType?

您想要什么


我使用这样一个函数

public static T GetEnumValue<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value);
}
public static T GetEnumValue(字符串值)
{
返回(T)Enum.Parse(typeof(T),value);
}
你可以这样称呼它

BlahType value = GetEnumValue<BlahType>("Blah1");
BlahType value=GetEnumValue(“Blah1”);

如果您不确定转换是否成功,请改用。

我使用此函数将字符串转换为枚举;然后你可以将其转换为int或其他类型

public static T ToEnum<T>(string value, bool ignoreUpperCase)
        where T : struct, IComparable, IConvertible, IFormattable {
        Type enumType = typeof (T);
        if (!enumType.IsEnum) {
            throw new InvalidOperationException();
        }
        return (T) Enum.Parse(enumType, value, ignoreUpperCase);
}
publicstatict-ToEnum(字符串值,bool-ignoreUpperCase)
其中T:struct,i可比较,i可转换,i可附加{
类型enumType=typeof(T);
如果(!enumType.IsEnum){
抛出新的InvalidOperationException();
}
返回(T)Enum.Parse(enumType,value,ignoreUpperCase);
}

Nice扩展方法。我只是想知道为什么它应该只忽略大写而不忽略大小写当我第一次使用这个函数时,我想检查给定的类型是否是枚举。在发现(使用reflector)Enum.Parse已经执行了这些检查(以及更多)并在类型不是Enum时抛出ArgumentException之后,我放弃了。抱歉,这是西班牙语翻译问题,它只是Enum.Parse重载的包装器
    public enum BlahType
    {
        blah1 = 1,
        blah2 = 2
    }

    string something = "blah1";
    BlahType blah = (BlahType)Enum.Parse(typeof(BlahType), something);
public static T ToEnum<T>(string value, bool ignoreUpperCase)
        where T : struct, IComparable, IConvertible, IFormattable {
        Type enumType = typeof (T);
        if (!enumType.IsEnum) {
            throw new InvalidOperationException();
        }
        return (T) Enum.Parse(enumType, value, ignoreUpperCase);
}