C # enum a stringa auto-conversione?
-
26-09-2019 - |
Domanda
E 'possibile avere il compilatore converte automaticamente i miei valori Enum in stringhe in modo da poter evitare in modo esplicito la chiamata al metodo ToString ogni volta. Ecco un esempio di quello che mi piacerebbe fare:
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
Soluzione
No. Un enum è proprio tipo, se si vuole convertirlo in qualcosa d'altro, si deve fare un certo lavoro.
Tuttavia, a seconda di cosa si sta facendo con esso, alcuni compiti chiamerà ToString () su di esso automaticamente per voi. Ad esempio, si può fare:
Console.Writeline(Rank.A);
Altri suggerimenti
Non siete probabilmente alla ricerca di enumerazioni sé, ma un elenco di stringa costante. Si può soddisfare le vostre esigenze meglio in alcuni scenari.
Usa questo, invece:
public static class Rank
{
public const string A = "A";
public const string B = "B";
public const string C = "C";
}
No, ma almeno si può fare le cose con le enumerazioni che chiameranno i loro metodi ToString()
quando potrebbe essere necessario utilizzare il loro valore di stringa, per esempio:.
Console.WriteLine(Rank.A); //prints "A".
La sintassi corretta dovrebbe essere
myRank.ToString("F");
[Attenzione, mod] incerto se questo è brutto, a me sembra un compromesso ragionevole.
var myEnumAsString = MyEnum+"";
Console.WriteLine(myEnumAsString); //MyEnum
Questo costringerà ToString implicita ()