foreach 依赖 IEnumerable.
for 循环每次循环会调用 GetCount() 来比较长度. 而 foreach 不考虑长度,只调用一次GetList()
foreach语句的局限性
如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍。
总结如下:
1.如果只是遍历集合或者数组,用foreach好些,快些。
2.如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用。iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。
3.在固定长度或长度不需要计算的时候for循环效率高于foreach。
4.在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便,并且foreach的时候会锁定集合中的对象.期间不能修改。
网友评论