直觉上,我认为是,但是我不确定是否存在一些我不了解的约定。

最佳答案

由于我们不知道实现是什么,因此唯一安全的答案是“是”。

但是,直接使用IEnumerator很少见-foreach更常见。对于通用IEnumerator<T>,可以使用using语句:

using(var iter = obj.GetEnumerator()) {
    ...
}


即使没有通用版本,您也可以作弊:

IEnumerator iter = obj.GetEnumerator();
using(iter as IDisposable) {
    ...
}


如果IDisposable可以处理iter

关于c# - 如果从IEnumerator <T> .MoveNext()或.Current引发异常,是否仍要处理该异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4416100/

10-12 00:28