foreach为什么在unity不建议用

首先看片文章
https://www.zhihu.com/question/30334270
里面有张图
这里解释了在每个foreach循环之后会有一个boxing的过程,什么是boxing?(详细看这里: http://www.cnblogs.com/xiaoshi/archive/2008/05/28/1208902.html)

简单来说就是把值类型转换成引用类型。
这里的第二行就是boxing过程
第三行就是unboxing过程

也就是说每次使用foreach会在结束的时候在堆上申请一段引用内存(40Bytes,对list的引用)

而引用内存多了后会在GCCollect时候回收。
回收的过程会卡。

所以unity不要用foreach的原因是,会产生垃圾内存,导致卡顿

你可能感兴趣的:(游戏,unity,NGUI,U3D)