C # enum для строки автоматического преобразования?
-
26-09-2019 - |
Вопрос
Возможно ли, чтобы компилятор автоматически преобразовать значения моих 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
Решение
Нет. Enum - это собственный тип, если вы хотите преобразовать его в чем-то еще, вы должны сделать некоторую работу.
Однако, в зависимости от того, что вы делаете с ним, некоторые задачи будут вызывать 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()
Методы, когда вам может потребоваться использовать их строковое значение, например:
Console.WriteLine(Rank.A); //prints "A".
Правильный синтаксис должен быть
myRank.ToString("F");
Внимание, взломать] не уверены, будь то неприятным, мне кажется разумным компромиссом.
var myEnumAsString = MyEnum+"";
Console.WriteLine(myEnumAsString); //MyEnum
Это заставит неявную ToString ()