在项目中遇到一个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);
以上方法可能比较笨,效率低一些,但是能解决实际问题,对效率要求不高的应用场合完成可以使用。
如果我的办法能帮到你,请给点个赞吧!!!