c# - 按创建顺序对哈希表进行排序

标签 c# .net vb.net collections hashtable

这类似于 How to keep the order of elements in hashtable ,.NET 除外。

.NET 中是否有任何 HashtableDictionary 允许您访问它的 .Index 属性以获取条目的顺序它被添加到收藏中了吗?

最佳答案

A NameValueCollection可以通过索引检索元素(但您不能要求特定键或元素的索引)。所以,

var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
Console.WriteLine("{0} = {1}", coll.GetKey(0), coll[0]); // prints "Z = 1"

但是,当您多次添加一个键时,它的行为很奇怪(与 IDictionary 相比):

var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
coll.Add("Z", "3");
Console.WriteLine(coll[0]); // prints "1,3"

但是,该行为已被详细记录。

注意:NameValueCollection 实现IDictionary .


顺便说一句:Dictionary<K,V>没有任何可以使用的索引,但是只要您只添加元素而不删除任何元素,元素的顺序就是插入顺序。请注意,这是 Microsoft 当前实现的一个细节:文档明确指出顺序是随机的,因此此行为可能会在 .NET Framework 或 Mono 的 future 版本中发生变化。

关于c# - 按创建顺序对哈希表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080667/

相关文章:

C# 使每个面板在单独的 View 中

c# - 如何在 c#.net3.5 中设置焦点并在按钮单击事件上启动已经运行的应用程序?

c# - 从 Web 服务反序列化 PHP 数据

c# - 获取特定的xelement子值

vb.net - <Flags> 和 <FlagsAttribute()> 之间的区别

.net - 在 .Net 中设置计划任务

c# - AOP 性能开销

c# - 如何查询数据集并遍历结果?

c# - 可以在 WinForms 中使用 'DeviceWatcher' 吗?

mysql - 表格规范化