C# enum para acumular conversão automática?
-
26-09-2019 - |
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
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 ()