C#枚举字符串自动转换?
-
26-09-2019 - |
题
时可以自动让编译器转换我的枚举值转换为字符串,所以我可以避开显式调用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()
不隶属于 StackOverflow