C#枚举字符串自动转换?

dco*_*led 12 c# enums implicit-cast implicit-conversion

是否可以让编译器自动将我的Enum值转换为字符串,这样我就可以避免每次都显式调用ToString方法.这是我想做的一个例子:

enum Rank { A, B, C }

Rank myRank = Rank.A;
string myString = Rank.A; // Error: Cannot implicitly convert type 'Rank' to 'string'
string myString2 = Rank.A.ToString(); // OK: but is extra work
Run Code Online (Sandbox Code Playgroud)

wom*_*omp 10

不.枚举是它自己的类型,如果你想把它转换成别的东西,你必须做一些工作.

但是,根据您正在使用它执行的操作,某些任务会自动为您调用ToString().例如,你可以这样做:

Console.Writeline(Rank.A);
Run Code Online (Sandbox Code Playgroud)

  • 另外,为了清楚起见,`Console.WriteLine`并没有什么特别之处,它只是有一个带有Object的重载,枚举被装箱,作为对象传递,然后`WriteLine`调用`ToString`. (6认同)

Tom*_*bes 5

您可能不是在寻找枚举本身,而是一个字符串常量列表。在某些情况下,它可以更好地满足您的需求。

使用此代替:

public static class Rank
{
   public const string A = "A";
   public const string B = "B";
   public const string C = "C";
}
Run Code Online (Sandbox Code Playgroud)