c# - 如何在 case 语句中使用 C# 枚举值的字符串值?

标签 c# string enums

我已经将 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;
  ...

我认为枚举是常量。我该如何解决这个问题?

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

最佳答案

从 C# 6 开始,您可以使用:case nameof(SomeEnum.SomeValue):

Nameof 在编译时被评估,只是一个与给定变量、类型或成员的(非限定)名称相匹配的字符串。当然,如果您重命名枚举选项名称,它也会随之改变。

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

相关文章:

c# - 有什么方法可以在 Xamarin.Forms 中将样式与我的 XAML 分开

c# - 如何将文本 block 动态添加到页面?

c# - ASP.NET 中有多少种类型的 Http Handler

c# - 等待停止线程的执行并且永远不会继续

swift - 具有多个键和关联值的可编码枚举

javascript - 如何为正则表达式添加条件?

c# - 用空字符串替换json字符串中的双引号

javascript - myString.replace( VARIABLE, "") ...... 但在全局范围内

vba - 在 VBA 中使用自定义枚举器实现类似 Python 的生成器

enums - 为什么不能使用 `Self` 来引用方法主体中的枚举变体?