这是关于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();
}