我有这样的public enum声明:
public enum States
    {
        SomeState,
        SomeOtherState
    }
有一个myString可以代表上面任何"状态" 的任意字符串,我想写一个开关来检查它当前是哪一个.
这是我的尝试.
States state = Enum.Parse(States, myString, true);
            switch (state)
            {
                case States.SomeState:
                case States.SomeOtherState:
                    break;
                default:
                    break;
            }
在Enum.Parse()它的内部告诉我,参数State被用作一个类型,而不是作为一个变量.这不是正确的用法吗?应该接收的第一个参数Enum.Parse是Type enumType:为什么然后它告诉我它需要一个变量?
许多回复表明使用typeof.不幸的是,我已经尝试过,但由于我收到以下错误,我猜这是一个错误的想法.
Enum.Parse(typeof(States), myString, true);
收益率:
不能隐式地将类型'对象'转换为'状态'.存在显式转换.
是的,您需要发送您正在解析的枚举类型(使用typeof):
States state = (States)Enum.Parse(typeof(States), myString, true);
该Parse方法期望一个类型的参数System.Type.没有的类型States.
这是文档的签名.
[ComVisibleAttribute(true)]
public static Object Parse(
    Type enumType,
    string value,
    bool ignoreCase
)
Parse返回一个,object所以它要求你在解析后转换为你的类型.
| 归档时间: | 
 | 
| 查看次数: | 1349 次 | 
| 最近记录: |