有些时候在Dictionary中Add添加键值对后,并不是直接加到Dictionary的最后面,遍历时元素的顺序不是元素添加的先后顺序。
因为字典Dictionary并不是有序存储的,在删除中间某个元素后,会留下一个空位,后续添加元素会填到这个空位,导致顺序“错乱”。
Dictionary实现原理参考:浅谈C# Dictionary实现原理
代码演示:Log结果显示,字典内元素顺序是"1,2,6,4,5",而不是"1,2,4,5,6"。
Dictionary<int, string> testDic = new Dictionary<int, string>();
testDic.Add(1, "111");
testDic.Add(2, "222");
testDic.Add(3, "333");
testDic.Add(4, "444");
testDic.Add(5, "555");
testDic.Remove(3);
testDic.Add(6, "666");
foreach (var item in testDic)
{
Debug.Log(item.Value);
}