C# 删除后添加字典

C# 删除后添加字典,c#,dictionary,C#,Dictionary,我有一个关于字典的问题。我正在使用以下代码: Dictionary<string, string> testDictionary = new Dictionary<string, string>(); testDictionary.Add("1", "1"); testDictionary.Add("2", "2"); testDictionary.Add("3", "3"); testDictionary.Remove("2"); testDictionary.A

我有一个关于字典的问题。我正在使用以下代码:

Dictionary<string, string> testDictionary = new Dictionary<string, string>();

testDictionary.Add("1", "1");
testDictionary.Add("2", "2");
testDictionary.Add("3", "3");

testDictionary.Remove("2");

testDictionary.Add("4", "4");

我希望这之后的字典和值是[1,3,4],但它是[1,4,3]。我怎样才能做到这一点呢?

字典天生就是无序的。
您不能这样做。

字典中键和值的顺序未指定。见:


但是,它们的顺序是相同的,即键中的第一个条目与值中的第一个条目相关联。

字典不一定是无序的。它们的顺序毕竟是一致的,如果是任意的,但这不是可以更改的

原因是字典是一个hashmap,它根据您的实现将其键散列到内存地址或散列表中的位置。这就是为什么字典查找如此之快,以及为什么您只能拥有唯一的字典键


有关更多信息,请参阅

为什么不像testDictionary.OrderByx=>x.Key那样对字典进行排序?只有当它不是System.Collections.Specialized.OrderedDictionary时。或者System.Collections.Generic.SortedDictionary实际上,它们的顺序不保证一致;当字典调整大小时,它可能会改变。如果你能解释一下为什么这是一个答案,那就好了。不管代码质量如何,只有一个没有任何推理的代码块不是一个好答案。
Dictionary<string, string> testDictionary = new Dictionary<string, string>();

testDictionary.Add("1", "1");
testDictionary.Add("2", "2");
testDictionary.Add("3", "3");

testDictionary.Remove("2");

Dictionary<string, string> tempDictionary = new Dictionary<string, string>();

foreach (string key  in tempDictionary.Keys )
{
    tempDictionary.Add(key, tempDictionary[key]);
}

testDictionary = tempDictionary;

testDictionary.Add("4", "4");