Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将IEnumerator设置为结束的最佳方法_C#_Performance - Fatal编程技术网

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

C# 将IEnumerator设置为结束的最佳方法,c#,performance,C#,Performance,我有一个自定义类,它实现了IEnumerable接口并保存当前的枚举数。添加新元素时,我需要将枚举数设置为最后一个元素 将枚举数设置为结束的示例代码: IEnumerable<int> seq = ... seq.Reset(); for (int i = 0; i < seq.Count; i++) { seq.MoveNext(); } IEnumerable seq=。。。 seq.Reset(); 对于(int i=0;i

我有一个自定义类,它实现了
IEnumerable
接口并保存当前的
枚举数。添加新元素时,我需要将枚举数设置为最后一个元素

将枚举数设置为结束的示例代码:

IEnumerable<int> seq = ...
seq.Reset();
for (int i = 0; i < seq.Count; i++)
{
  seq.MoveNext();    
}
IEnumerable seq=。。。
seq.Reset();
对于(int i=0;i
如何加快速度?
(我可以走到末尾吗?不能滚动所有序列元素吗?

for
语句将从
x
迭代到
y
,并以预定义的增量执行,如下所示:

for (`start`; `until`; `increment`)
e、 如果我们想从0循环到9,增量为1,我们会写

for (int i = 0; i < 10; i++)
如果更快意味着更少的代码(另一种选择是)

IEnumerable seq=。。。
while(seq.MoveNext())
{
var项目=序列当前;
}
编辑
你想要 它是一个扩展方法,其代码与上面类似

EDIT2

我需要seq.Current=seq.Last()

您的代码类似于

        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();
        }
IEnumerable seq=。。。
整数计数=0;
//后面的while相当于seq.Count
while(seq.MoveNext())
{
计数++;
}
int i=0;

while(iDo比什么快多少?快多少(在性能上)?这是唯一的方法。Reset、MoveNext是唯一可用于迭代的操作(当使用IEnumerable/IEnumerator时)。IEnumerable中是否有Count属性-O@Famos这是一种方法,而不是属性!;)(循环的每次迭代都会调用它,一次又一次地迭代枚举)为什么不为此使用数组?我需要seq.Current=seq.Last();使用IEnumerator是不可能的。
        IEnumerable<int> seq = ...

        while (seq.MoveNext())
        {
           var item = seq.Current;
        }
        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();
        }