直觉上,我认为是,但是我不确定是否存在一些我不了解的约定。
最佳答案
由于我们不知道实现是什么,因此唯一安全的答案是“是”。
但是,直接使用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/