https://blog.csdn.net/fww165460/article/details/115198483
https://www.cnblogs.com/eve612/p/13628231.html
foreach属于迭代器,迭代循环。只能按序依次遍历完成,所以不支持中断行为。break和contine会报错,return虽然不会报错,但是不会返回。使用try catch可以跳出
for循环是可以中断循环(利用break语句或return语句,continue),但forEach不可以中断循环。通过索引(下标)来进行循环
for可以认为指定关于循环的起点,
foreach循环起点只能从0开始
只要集成了IEumreable接口的对象可以使用foreach遍历
性能上:
for>foreach>map for的速度大约快foreach1倍。而forech快map20%。
原因:for循环没有额外的函数和调用栈,实现比较简单
foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。
主要是增强了for循环,在遍历数组,集合上会更加方便
可以遍历的内容:数组,Collection ----直接遍历 Map -------间接遍历
foreach是for循环的简化版本,但是不能完全替代for循环,
foreach简化了流程,提高了代码的可读性和安全性。在遇到数组或者集合索引的情况下,foreach就不好用了。而且foreach一般都是结合泛型使用。
foreach只是来循环遍历集合或者数组的时候会方便点,for则在复杂的循环中使用效率更高.
今天和大家聊了聊如何快速的遍历List集合,在大多数的情况下推荐大家使用foreach关键字,它既有溢出检查也有多线程下版本号的控制,可以让我们更容易的写出正确的代码。
如果在需要高性能和大数据量的场景,那么推荐直接使用for和CollectionsMarshal.AsSpan来遍历集合;当然,使用CollectionsMarshal.AsSpan一定要注意使用方式。