Enum.GetNames () da como resultado un orden inesperado con constantes de enumeración negativas

Tengo la siguiente definición de enumeración (en C #):

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 unEnum.GetNames() en este tipo obtengo una matriz de cadenas con 9 elementos como se esperaba, pero el orden es Todos, Rastreo, ..., Desactivado, General, que no es lo que esperaba.

Aquí está el MSDNdocumentació paraEnum.GetNames():

"Observaciones: los elementos de la matriz de valores de retorno se ordenan por los valores de las constantes enumeradas".

¿Que está pasando aqui? Puedo cambiar mi programa para tener en cuenta esta "funcionalidad", pero me gustaría saber por qué .NET está haciendo lo que está haciendo.