Tengo la siguiente definición de enumeración (en C#):Enum.GetNames() resultados en orden inesperado con enumeración negativa constantes de
public enum ELogLevel
{
General = -1, // Should only be used in drop-down box in Merlinia Administrator log settings
All = 0, // Should not be used as a level, only as a threshold, effectively same as Trace
Trace = 1,
Debug = 2,
Info = 3,
Warn = 4,
Error = 5,
Fatal = 6,
Off = 7 // Should not be used as a level, only as a threshold
}
Ahora, cuando hago un Enum.GetNames()
en este tipo Puedo obtener una matriz de cadenas con 9 elementos como se esperaba, pero el orden es All, Trace, ..., Off, General, que no es lo que esperaba.
Aquí está el MSDN documentation para Enum.GetNames()
:
"Observaciones: Los elementos de la matriz valor de retorno están ordenados por los valores de las constantes enumeradas."
¿Qué está pasando aquí? Puedo cambiar mi programa para tener en cuenta esta "funcionalidad", pero me gustaría saber por qué .NET está haciendo lo que está haciendo.
Sugeriría enviar un informe de error a Microsoft. –
Ya no es un error, es una característica que está [ahora documentada] (http://msdn.microsoft.com/en-us/library/system.enum.getvalues.aspx): "Los elementos de la matriz están ordenados por los valores binarios de las constantes de enumeración (** es decir, por su magnitud sin signo **) ". – jason