当我调用ConfigurationManager.AppSettings.AllKeys时,我是否总是以相同的顺序获得密

本文关键字:顺序 AppSettings ConfigurationManager 调用 AllKeys 是否 | 更新日期: 2023-09-27 18:08:16

对于web.configapp.config,当我调用ConfigurationManager.AppSettings.AllKeys时,我是否一直以相同的顺序获得它们在配置文件中出现的密钥?

我在MSDN上找不到任何提及

当我调用ConfigurationManager.AppSettings.AllKeys时,我是否总是以相同的顺序获得密

ConfigurationManager.AppSettingsNameValueCollection型,其顺序未定。AllKeys返回基于NameValueCollection的字符串数组,因此它的顺序也是不确定的。

看到:NameValueCollection

该类型的集合不保留元素的顺序,并且枚举集合时不保证特定的顺序。

如果你想要一个明确的顺序,使用

ConfigurationManager.AppSettings.AllKeys.OrderBy(r=> r)

为什么这很重要?这是一个键集合:如果顺序对你来说很重要,那就按你想要的顺序排列。您还应该记住,<appsettings>中的数据来自多个来源。它是从

的某个子集中检索的。
  • 机器配置(machine.config)
  • 应用配置(app.config)
  • <
  • 特定于用户的配置/gh>
  • IIS应用主机配置
  • root web.config
  • 在IIS的应用程序路径中的web.config文件中的任何一个。

进一步,ConfigurationManager.AppSettingsNameValueCollection。我怀疑但不确定它的后台存储是一个哈希表。在这里,您将看到的顺序与

有关。
  • 键的计算散列值,
  • 这些键被分配到的哈希桶,和
  • 插入顺序(实际上是操作顺序—插入和删除,因为删除可能会在哈希桶中留下一个空槽,由随后的插入填充)。

同一组键,如果按不同的顺序插入,在检索时会显示不同的顺序。