Hola chicos, he estado teniendo problemas con el "orden" de los valores de una enumeración. Es un poco difícil de explicar, es por eso que escribí algo de código:¿Por qué (y cómo) influye el orden de un Enum en el valor de ToString?
class Program
{
public enum EnumA
{
One = 1,
Two = One,
Three = Two,
Four = 4
}
public enum EnumB
{
One = 1,
Two = One,
Four = 4,
Three = Two
}
public enum EnumC
{
Two = One,
Three = Two,
Four = 4,
One = 1
}
static void Main(string[] args)
{
Console.WriteLine("Enum A:");
Console.WriteLine(EnumA.One);
Console.WriteLine(EnumA.Two);
Console.WriteLine(EnumA.Three);
Console.WriteLine(EnumA.Four);
Console.WriteLine();
Console.WriteLine("Enum B:");
Console.WriteLine(EnumB.One);
Console.WriteLine(EnumB.Two);
Console.WriteLine(EnumB.Three);
Console.WriteLine(EnumB.Four);
Console.WriteLine();
Console.WriteLine("Enum C:");
Console.WriteLine(EnumC.One);
Console.WriteLine(EnumC.Two);
Console.WriteLine(EnumC.Three);
Console.WriteLine(EnumC.Four);
Console.WriteLine();
Console.ReadLine();
}
}
La salida es:
Enum A: Dos Dos Dos Cuatro
Enum B: Tres Tres Tres Cuatro
Enum C:Una Una Una Cuatro
Mi pregunta es: ¿Por qué !? No puedo encontrar la lógica para la salida. La mayoría de las veces hay algo de lógica que encontrar, así que espero que ustedes puedan arrojar algo de luz sobre este tema.
Utilicé VS2010/.Net 4.0 para compilar y ejecutar el código.
Hola Jon, pensé lo mismo, pero ... en el caso de EnumA debería ser tres y no dos. Incluso si cambio el valor Tres = Uno, el EnumA.Three.ToString() sigue siendo "Dos". –
Ya veo ... ¡qué raro! Encontré el problema usando una enumeración con formatos de archivo y cosas así. Aún así ... es raro, ¿no? –
@Kees: No creo que sea particularmente extraño, es como si las tablas hash no estuvieran ordenadas. (De hecho, se puede basar exactamente en eso :) –