原标题:课程 | Unity中Dictionary(字典)的遍历
很多关于unity优化的文章都说到,尽量用for做遍历,而不是用foreach做遍历。原因是foreach会产生更多GC。那如果是Dictionary呢?Dictionary不用foreach是绕不过去的(别告诉我转成一个List然后用for,这样绕远了,GC也不少)。其实foreach也有3种遍历方式,可以根据自己需求来用。还有一种不用foreach的方式,但我个人认为这样并不能减少GC.
1.Dictionary的四种遍历
(1)KeyValuePair
这是最常见的一种
(2)Dictionary.Values
当只想遍历Value时
(3)Dictionary.Keys
当只想遍历Key时
以上三种,后两种比第一种性能好,可根据需求来选择,我们通常并不是是key和value都想遍历,而只是其中一种
(4)不用foreach
2.规矩还是得遵守
以上这段代码看似没问题,编译也不报错,但实际运行不了。大家可以去试试,自然就会想到那条规矩没遵守了。
实际项目中value通常是class,不是简单的数据类型,还有指针。如果想全部释放,那就得遍历。但上面那段代码不能运行。这种情况下如何做?给大家写一小段代码示范。
private Dictionary<string, Skill> dicActorSkillObjects = new Dictionary<string, Skill> (); for (int i = 0; i < dicActorSkillObjects.Keys.Count; i++) { Skill s = dicActorSkillObjects.ElementAt(i).Value; s.Destroy(); }
返回搜狐,查看更多
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。