Pergunta

É possível que o compilador converta automaticamente meus valores de enumeração em strings para que eu possa evitar chamar explicitamente o método de tostragem sempre. Aqui está um exemplo do que eu gostaria de fazer:

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
Foi útil?

Solução

Não. Uma enumeração é seu próprio tipo, se você deseja convertê -lo em outra coisa, precisa fazer algum trabalho.

No entanto, dependendo do que você está fazendo com ele, algumas tarefas chamarão o ToString () para você automaticamente. Por exemplo, você pode fazer:

Console.Writeline(Rank.A);

Outras dicas

Você provavelmente não está procurando enums em si, mas uma lista de strings constantes. Pode atender melhor às suas necessidades em alguns cenários.

Use isso em vez disso:

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

Não, mas pelo menos você pode fazer coisas com enums que chamarão de seu ToString() métodos quando você pode precisar usar o valor da string, por exemplo:

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

A sintaxe correta deve ser

myRank.ToString("F");

Cuidado, hackear] Não sabe se isso é desagradável, para mim parece um compromisso razoável.

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

Isso forçará a ToString implícita ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top