C# 在以下情况下如何重置IEnumerator实例

C# 在以下情况下如何重置IEnumerator实例,c#,.net,C#,.net,在以下情况下,如何重置IEnumerator实例?(e.Reset()抛出NotImplementedException) void Main() { IEnumerator e=新列表{“a”、“b”、“c”}。选择(o=>o)。GetEnumerator(); while(如MoveNext()) { 控制台写入线(e.当前); } 如果( //某些条件 ) { e、 重置(); while(如MoveNext()) { //用e.Current做些别的事情 } } } 因为该方法的“实现

在以下情况下,如何重置IEnumerator实例?(e.Reset()抛出NotImplementedException)

void Main()
{
IEnumerator e=新列表{“a”、“b”、“c”}。选择(o=>o)。GetEnumerator();
while(如MoveNext())
{
控制台写入线(e.当前);
}
如果(
//某些条件
) 
{
e、 重置();
while(如MoveNext())
{
//用e.Current做些别的事情
}
}
}

因为该方法的“实现”如下所示:

public void Reset() {
  throw new NotImplementedException();
}
供参考:

为COM互操作性提供了重置方法。事实并非如此 必须加以实施;相反,实现者可以 只需抛出一个NotSupportedException

在这种情况下,所使用的异常类型是该建议的偏差。

查看解释如下:

为COM互操作性提供了重置方法。事实并非如此 必须加以实施;相反,实现者可以 只需抛出一个NotSupportedException

实现者注意:所有重置调用必须导致相同的状态 对于枚举器。首选的实现是移动 枚举数到集合的开头,在第一个 要素如果已删除集合,则这将使枚举数无效 自创建枚举数以来已修改,这与 移动下一个和当前

也:
public void Reset() {
  throw new NotImplementedException();
}