foreach是怎么实现的?
For依赖对Length 属性和索引运算符([])的支持。
借助Length 属性,C# 编译器可以使用for语句迭代数组中的每个元素。
for适用于长度固定且始终支持索引运算符的数组,但并不是所有类型集合的元素数量都是已知的。
比如许多集合类(包括Stack、Queue和 Dictionary<TKey,TValue>)都不支持按索引检索元素。
因此,需要使用一种更为通用的方法来迭代元素集合。
假设可以确定第一个、第二个和最后一个元素,那么就没有必要知道元素数量,也没有必要支持按索引检索元素。
Foreach,在这种背景下应运而生。实际上,Foreach内部使用迭代器的MoveNext,和Current完成对元素的遍历。
PS:习惯问题 我还是比较喜欢For....