将 IEnumerator 设置为结束的最佳方法

本文关键字:最佳 方法 结束 IEnumerator 设置 | 更新日期: 2023-09-27 18:34:01

我有自定义类来实现IEnumerable<int[]>接口并保存当前Enumerator。添加新元素时,我需要将枚举器设置为最后一个元素。

将枚举器设置为结尾的示例代码:

IEnumerable<int> seq = ...
seq.Reset();
for (int i = 0; i < seq.Count; i++)
{
  seq.MoveNext();    
}

如何更快地做到这一点?(我可以走到最后不能不滚动所有序列元素吗?

将 IEnumerator 设置为结束的最佳方法

如果更快意味着更少的代码(另一种选择是),

        IEnumerable<int> seq = ...
        while (seq.MoveNext())
        {
           var item = seq.Current;
        }

编辑
你想要 seq。最后()它是一种扩展方法,具有类似于上面的代码。

编辑2

我需要顺序。当前=序列。最后();

您的代码类似于

        IEnumerable<int> seq = ...
        int count=0;
        //Following while is equivalent to seq.Count
        while (seq.MoveNext()) 
        {
           count++;
        }
        int i=0;
        while (i<count)
        {
          seq.MoveNext();
        }

仅使用 IEnumerator 无法设置 seq。在一次迭代中从当前到最后,因为您永远不知道在哪里停止。

for语句将从 x 迭代到 y ,具有预定义的增量,如下所示:

for (`start`; `until`; `increment`)

例如,如果我们想从 0 循环到 9,增量为 1,我们会写

for (int i = 0; i < 10; i++)

如果有一个实现next类型方法的对象,则可能需要使用 while 循环。

while (seq.CurrentItem != null)
{
    // do something with the current item and move to next
    seq.Next();
}

我建议阅读有关 C# 中的循环的信息。