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

是否可以让编译器自动将我的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 

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

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

 Console.Writeline(Rank.A); 

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

改为使用它:

 public static class Rank { public const string A = "A"; public const string B = "B"; public const string C = "C"; } 

不,但至少你可以使用enums做一些事情,当你可能需要使用它们的字符串值时,它会调用它们的ToString()方法,例如:

 Console.WriteLine(Rank.A); //prints "A". 

应该是正确的语法

 myRank.ToString("F"); 

[警告,黑客]不确定这是否令人讨厌,对我来说这似乎是一个合理的妥协。

var myEnumAsString = MyEnum+""; Console.WriteLine(myEnumAsString); //MyEnum

这将强制隐式ToString()