【发布时间】:2020-09-17 21:12:57
【问题描述】:
假设你有一个像下面这样的枚举:
namespace MyApp
{
public enum Colors
{
Red = 0,
Blue = 1,
Green = 2,
Yellow = 3
}
}
你想把枚举作为一个数组来检索,所以你使用这个函数来获取所有的信息,然后将它发送回前端。
Type.GetFields(BindingFlags.Public | BindingFlags.Static)
类型是我的枚举颜色。现在在我的本地环境中,我按照声明的顺序获取值。每次我刷新页面时,枚举数组的顺序都是一样的,没有变化。
但是,我的应用程序已经部署在另一个环境中,并且在此服务器中每次都以不同的顺序检索数组。这会导致前端错误,但我无法修复在本地环境中实际上看不到的内容。
Type.GetFields 函数是否有不同的行为,我不知道我用于运行项目的 .NET Framework 版本?这是我目前唯一能想到的。
在进行此更改之前,我需要在我的环境中重现此内容。
【问题讨论】:
-
@GSerg 并不特别。因为在进行此更改之前,我需要在本地环境中重现随机排序的数组。在其他环境(客户端)上,阵列是随机排序的。在我的开发环境中,每次的顺序都是一样的。所有环境的相同代码
-
如果您需要特定订单,请订购。如果您依赖此命令,那么您将忽略文档中的建议。至于为什么顺序不同,可能是优化问题,或者任何其他数量的怪癖..
-
为此我总是使用
Enum.GetNames()。如果我没记错的话,它确实会以 expected 的顺序返回它们。实际上,备注说返回值数组的元素是按照枚举常量的二进制值排序的(也就是按照它们的无符号大小)。