16

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

5 回答 5

11

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

但是,根据您使用它的方式,某些方法会ToString()自动为您调用它。例如,您可以这样做:

Console.Writeline(Rank.A);
于 2010-06-09T23:16:46.347 回答
10

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

改用这个:

public static class Rank
{
   public const string A = "A";
   public const string B = "B";
   public const string C = "C";
}
于 2017-02-10T07:52:25.557 回答
1

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

Console.WriteLine(Rank.A); //prints "A".
于 2010-06-09T23:17:49.253 回答
0

正确的语法应该是

myRank.ToString("F");
于 2010-06-09T23:46:57.687 回答
0

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

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

这将强制隐式 ToString()

于 2015-07-14T13:15:22.630 回答