枚举可以包含字符串吗?

Gee*_*eek 15 c# string enums

如何声明enum具有值的字符串?

private enum breakout {            
    page = "String1",
    column = "String2",
    pagenames = "String3",
    row = "String4"
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 18

不,他们不能.它们仅限于底层枚举类型的数值.

但是,您可以通过辅助方法获得类似的行为

public static string GetStringVersion(breakout value) {
  switch (value) {
    case breakout.page: return "String1";
    case breakout.column: return "String2";
    case breakout.pagenames: return "String3";
    case breakout.row: return "String4";
    default: return "Bad enum value";
  }
}
Run Code Online (Sandbox Code Playgroud)

  • +1好帮手方法! (3认同)

Cod*_*ked 12

正如其他人所说,不,你不能.

你可以这样做静态类:

internal static class Breakout {
    public static readonly string page="String1";
    public static readonly string column="String2";
    public static readonly string pagenames="String3";
    public static readonly string row="String4";

    // Or you could initialize in static constructor
    static Breakout() {
        //row = string.Format("String{0}", 4);
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

internal static class Breakout {
    public const string page="String1";
    public const string column="String2";
    public const string pagenames="String3";
    public const string row="String4";
}
Run Code Online (Sandbox Code Playgroud)

使用readonly,您实际上可以在静态构造函数中分配值.使用const时,它必须是固定的字符串.

或者将DescriptionAttribute分配给枚举值,就像这里一样.


Yoc*_*mer 8

不,但您可以将enum的值作为字符串获取:

Enum.ToString方法

private enum Breakout {     
  page,
  column,
  pagenames,
  row
}

Breakout b = Breakout.page;
String s = b.ToString(); // "page"
Run Code Online (Sandbox Code Playgroud)