这是关于IEnumerator. 它们用于获取列表的值,其中长度不一定提前知道(即使它可能是)。这个词来自enumerate,意思是“数数或一一命名”。
IEnumerator并且IEnumerator<T>由 .NET 中的所有IEnumerable和IEnumerable<T>接口(后者提供两者)通过GetEnumerator(). 这很重要,因为该foreach语句旨在通过这些接口方法直接与枚举器一起使用。
例如:
IEnumerator enumerator = enumerable.GetEnumerator();
while (enumerator.MoveNext())
{
object item = enumerator.Current;
// Perform logic on the item
}
变成:
foreach(object item in enumerable)
{
// Perform logic on the item
}
至于您的具体场景,.NET 中的几乎所有集合都实现IEnumerable. 因此,您可以执行以下操作:
public IEnumerator Enumerate(IEnumerable enumerable)
{
// List implements IEnumerable, but could be any collection.
List<string> list = new List<string>();
foreach(string value in enumerable)
{
list.Add(value + "roxxors");
}
return list.GetEnumerator();
}