如何正确调用IEnumerator.Reset
方法?
文档中说明:
Reset
方法是为COM互操作性提供的。它不一定需要被实现; 相反,实现者可以简单地抛出一个NotSupportedException
。
好了,那么这是否意味着我不应该调用它?
使用异常来控制流程是如此诱人:
using (enumerator = GetSomeExpensiveEnumerator())
{
while (enumerator.MoveNext()) { ... }
try { enumerator.Reset(); } //Try an inexpensive method
catch (NotSupportedException)
{ enumerator = GetSomeExpensiveEnumerator(); } //Fine, get another one
while (enumerator.MoveNext()) { ... }
}
这就是我们应该如何使用它吗?还是说我们根本不应该从托管代码中使用它?