正确的调用方式到底是怎样的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()) { ... }
}
这就是我们应该使用的方式吗?或者我们根本不打算从托管代码中使用它?