开发者

C# enum to string auto-conversion?

开发者 https://www.devze.com 2023-01-03 10:19 出处:网络
Is it possible to have the compiler automatically convert my Enum values to strings so I can avoid explicitly calling the ToString method every time.Here\'s 开发者_StackOverflow中文版an example of wha

Is it possible to have the compiler automatically convert my Enum values to strings so I can avoid explicitly calling the ToString method every time. Here's 开发者_StackOverflow中文版an example of what I'd like to do:

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


No. An enum is its own type, so if you want to convert it to something else, you have to do some work.

However, depending on what you're doing with it, some methods will call ToString() on it automatically for you. For example, you can do:

Console.Writeline(Rank.A);


You are not probably looking for enums itself, but a list of string constant. It can fit your needs better in some scenarios.

Use this instead:

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


No, but at least you can do things with enums that will call their ToString() methods when you might need to use their string value, e.g.:

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


The correct syntax should be

myRank.ToString("F");


[Caution, hack] Unsure as to whether this is nasty, to me it seems a reasonable compromise.

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

This will force implicit ToString()

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号