C # enumeración de cadena de auto-conversión?
-
26-09-2019 - |
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
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 ()