gpt4 book ai didi

c# - 从 String 解析枚举不起作用

转载 作者:行者123 更新时间:2023-12-02 01:09:22 25 4
gpt4 key购买 nike

我有一个像这样声明的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);

产量:

cannot implicitly convert type 'object' to 'States'. An explicit conversion exists.

最佳答案

是的,您需要发送您正在解析的枚举类型(使用 typeof):

States state = (States)Enum.Parse(typeof(States), myString, true);

Parse 方法需要一个类型为 System.Type 的参数。不是 类型的 States

这是来自 docs 的签名.

[ComVisibleAttribute(true)]
public static Object Parse(
Type enumType,
string value,
bool ignoreCase
)

Parse 返回一个 object 因此它需要您在解析后转换为您的类型。

关于c# - 从 String 解析枚举不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com