时可以自动让编译器转换我的枚举值转换为字符串,所以我可以避开显式调用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";
}

没有,但至少你可以做的事情,将调用其ToString()方法时,您可能需要使用它们的字符串值,e.g枚举:

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

正确的语法应

myRank.ToString("F");

[注意事项,破解]不确定这是否是讨厌的,对我来说这似乎是一个合理的妥协。

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

这将迫使隐含的ToString()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top