Pregunta

¿Es posible tener el compilador automáticamente convertir mis valores de enumeración de cadenas para que pueda evitar explícitamente llamando al método ToString cada vez. He aquí un ejemplo de lo que me gustaría hacer:

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
¿Fue útil?

Solución

No. Una enumeración es su propio tipo, si se desea convertir a otra cosa, usted tiene que hacer algún trabajo.

Sin embargo, dependiendo de lo que estás haciendo con él, algunas tareas llamarán ToString () sobre ella automáticamente. Por ejemplo, se puede hacer:

Console.Writeline(Rank.A);

Otros consejos

Usted no está probablemente en busca de sí mismo enumeraciones, pero una lista de constante de cadena. Puede adaptarse a sus necesidades mejor en algunos escenarios.

El uso de esta forma:

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

No, pero al menos se puede hacer cosas con las enumeraciones que llamará a sus métodos ToString() cuándo se puede necesitar utilizar su valor de cadena, por ejemplo:.

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

La sintaxis correcta debería ser

myRank.ToString("F");

[Precaución, truco] No está seguro de si esto es desagradable, me parece un compromiso razonable.

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

Esto obligará ToString implícita ()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top