C # enum to string автоконвертация? - PullRequest
11 голосов
/ 10 июня 2010

Возможно ли, чтобы компилятор автоматически преобразовывал мои значения 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 ]

10 голосов
/ 10 июня 2010

Нет. Перечисление - это его собственный тип, если вы хотите преобразовать его во что-то другое, вам нужно проделать определенную работу.

Однако, в зависимости от того, что вы делаете с ним, некоторые задачи вызовут для него ToString () автоматически. Например, вы можете сделать:

Console.Writeline(Rank.A);
5 голосов
/ 10 февраля 2017

Вероятно, вы ищете не сами перечисления, а список строковых констант.В некоторых сценариях он может лучше соответствовать вашим потребностям.

Используйте это вместо:

public static class Rank
{
   public const string A = "A";
   public const string B = "B";
   public const string C = "C";
}
1 голос
/ 10 июня 2010

Нет, но по крайней мере вы можете делать с перечислениями, которые будут вызывать их методы ToString(), когда вам может понадобиться использовать их строковое значение, например:

Console.WriteLine(Rank.A); //prints "A".
0 голосов
/ 14 июля 2015

[Осторожно, взломать] Не уверен, насколько это противно, мне кажется, это разумный компромисс.

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

Это заставит неявный ToString ()

0 голосов
/ 10 июня 2010

Правильный синтаксис должен быть

myRank.ToString("F");
...