【发布时间】:2011-07-25 16:31:33
【问题描述】:
我有以下枚举定义(在 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,这不是我所期望的。
这是 Enum.GetNames() 的 MSDN documentation:
"备注:返回值数组的元素按 枚举常量的值。”
这里发生了什么?我可以更改我的程序以将这种“功能”考虑在内,但我有点想知道为什么 .NET 正在做它正在做的事情。
【问题讨论】:
-
我建议向 Microsoft 提交错误报告。
-
这不再是一个错误,它是now documented 的一个特性:“数组的元素按枚举常量的二进制值排序(即按它们的无符号大小)。”