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
È stato utile?

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 ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top