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

时间:2010-06-09 23:11:44

标签: 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

5 个答案:

答案 0 :(得分:10)

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

但是,根据你正在做什么,一些任务会自动为你调用ToString()。例如,你可以这样做:

Console.Writeline(Rank.A);

答案 1 :(得分:5)

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

请改用:

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

答案 2 :(得分:1)

不,但至少你可以使用能够在需要使用其字符串值时调用其ToString()方法的枚举来执行操作,例如:

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

答案 3 :(得分:0)

正确的语法应该是

myRank.ToString("F");

答案 4 :(得分:0)

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

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

这将强制隐式ToString()