C#中HashTable.Keys属性得到的key集合是有序还是无序?

看教程哈希表是无序的,但使用foreach来遍历HashTable.keys,得到的结果却是和add先后相反的顺序

HashTable Ht1=new HashTable();
Ht1.Add(1, "ab");
Ht1.Add(2, "bc"):
Ht1.Add(3, "cd");
Ht1.Add(4, "de");
foreach(var key in Ht1.Keys)
{
  Console.WriteLine(key);
}

//得到的结果是4,3,2,1,怎么试都是这个结果,不应该是乱序的吗?
请答友帮忙解答,多谢了

所谓哈希表是无序的,不是说真的没有顺序
因为每个具体对象的哈希值是唯一的,那么按照哈希值排序,排序也一定是唯一的
问题是一个数字的哈希值,并不跟数字本身成正比
也就是说,它的顺序和你平时理解的顺序是不一致的
所以你不能用值的大小、插入的先后作为顺序的依据
你可以试试把你的4个数据换个顺序插入,它的顺序肯定还是原来的顺序
你换4个数据插入,就不见得还是刚好倒序的