枚举不能包含字符串

本文关键字:字符串 包含 不能 枚举 | 更新日期: 2023-09-27 17:58:43

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

private enum breakout {            
    page = "String1",
    column = "String2",
    pagenames = "String3",
    row = "String4"
}

枚举不能包含字符串

不,他们不能。它们仅限于基础枚举类型的数值。

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

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";
  }
}

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

你可以这样做静态类:

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);
    }
}

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

使用只读,实际上可以在静态构造函数中赋值。使用const时,它必须是一个固定字符串。

或者为枚举值指定DescriptionAttribute,如这里所示。

没有,但您可以将枚举的值作为字符串:

Enum.ToString方法

private enum Breakout {     
  page,
  column,
  pagenames,
  row
}
Breakout b = Breakout.page;
String s = b.ToString(); // "page"

默认情况下,枚举的基础类型为integer,这在msdn上也有说明。

也许Enum.GetName()/Enum.GetNames()会对您有所帮助。

您可以创建一个枚举字典。

public enum OrderType
{
    ASC,
    DESC
}
public class MyClass
{
    private Dictionary<OrderType, string> MyDictionary= new Dictionary<OrderType, string>()
                                                     {
                                                         {OrderType.ASC, ""},
                                                         {OrderType.DESC, ""},
                                                     };
}