一尘不染

如何获取foreach循环当前迭代的索引?

c#

在C#中是否有一些我没有遇到过的稀有语言构造(例如我最近学到的一些,有些是关于Stack Overflow的)来获取代表foreach循环当前迭代的值?

例如,我目前根据情况执行以下操作:

int i = 0;
foreach (Object o in collection)
{
    // ...
    i++;
}

阅读 190

收藏
2020-05-19

共1个答案

一尘不染

foreach是遍历实现集合IEnumerable。它通过调用GetEnumerator集合来执行此操作,该集合将返回Enumerator

此枚举器具有一个方法和一个属性:

  • MoveNext()
  • 当前

Current返回枚举器当前所在的对象,并MoveNext更新Current到下一个对象。

索引的概念与枚举的概念是陌生的,无法做到。

因此,大多数集合都可以使用索引器和for循环结构遍历。

与使用局部变量跟踪索引相比,在这种情况下,我非常喜欢使用for循环。

2020-05-19