Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top