Кажется, мое предположение подтверждается ответом BoltClock ниже.

я есть следующее определение перечисления (в 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
}

Теперь, когда я делаюEnum.GetNames() в этом типе я получаю строковый массив с 9 элементами, как и ожидалось, но порядок: All, Trace, ..., Off, General, что не соответствует ожиданиям.

Вот MSDNдокументация заEnum.GetNames():

«Примечания: элементы массива возвращаемых значений отсортированы по значениям перечисляемых констант».

Что тут происходит? Я могу изменить свою программу, чтобы учесть эту «функциональность», но мне хотелось бы знать, почему .NET делает то, что делает.