我认为是的,但是我不确定是否有一些我不知道的惯例。

有帮助吗?

解决方案

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

但是,很少使用 IEnumerator 直接地 - foreach 更普遍。对于通用 IEnumerator<T> 您可以使用使用语句:

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

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

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

如果它是可识别的,它将处置iTer

其他提示

没有一次性对象 必须 永远被处置。[1]

但他们 应该 是。作为一个 using 块使用 finally 处置条款,这是执行的 using 块正常或通过例外情况,即使面对例外,默认值是处置。


[1] 我想一个人可能会有一个越野车实施,其中持有非管理资源,并且没有最终确定器,但是实施最终方案的正确措施。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top