C# dictionary中键值对顺序问题

在项目中遇到一个BUG,发现是因为通过dictionary的Add方法,删除再添加键值对后,并不一定是添加到最后一个位置的,导致在遍历字典时,不能获取预期顺序的数据。

当然,涉及到顺序问题使用dictionary是不友好的,最好是使用List;
另外还有百度到的sorteddictionary可以使用,但是我的键(key)不合适.

但是我代码已经基本完成,没时间进行大的修改了,如何处理呢?

使用以下方法,新建一个字典对象,并将原有字典存储。然后需要用到的字典dic_Form重新new一下,重新逐个添加原有键值对,最后添加最新的键值对,删除后重新添加的键值对保证是在最后一个位置了。

附上代码“

Dictionary<TreeNode, IForm> dic = new Dictionary<TreeNode, IForm>();
 //解决dic顺序问题
 dic = dic_need;
 dic_need = new Dictionary<TreeNode, IForm>();
 foreach (var item in dic)
 {
     dic_need.Add(item.Key, item.Value);
 }
 //最后增加需要添加到末尾位置的键值对
 dic_need.Add(treeNd, form_c);

以上方法可能比较笨,效率低一些,但是能解决实际问题,对效率要求不高的应用场合完成可以使用。

如果我的办法能帮到你,请给点个赞吧!!!

你可能感兴趣的:(winform,c#,winform)