我已经将C#枚举定义为

public enum ORDER
{
    ...
    unknown,
    partial01,
    partial12,
    partial23,
}

并可以将其值用作字符串,如下所示:
            string ss = ORDER.partial01.ToString();

但是,当我尝试在case语句中使用它时,它无法编译:
string value = ...
switch (value)
{
    case null:
        break;
    case "s":
        // OK
        break;
    case ORDER.partial01.ToString():
        // compiler throws "a constant value is expected"

        break;
  ...

我以为枚举是常量。我该如何解决?

(我无法将值解析为枚举,因为某些值超出了范围)

最佳答案

枚举是一个常量,但是.ToString()的结果不是。就编译器而言,它是一个动态值。您可能需要将切换用例转换为一系列if/else语句

关于c# - 如何在case语句中使用C#枚举值的字符串值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1273228/

10-09 07:34
查看更多