首先看片文章 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的原因是,会产生垃圾内存,导致卡顿