为什么需要处理枚举器?

问题描述

根据公认的答案,C# 中的 Enumerator disposal when not using using,foreach or manually calling Dispose() 枚举器必须在完成后处理,无论您是让 foreach 自动执行此操作,还是您自己执行此操作,如果您更愿意通过以下方式写出等效逻辑手。

我没想到会这样;会认为枚举器将由垃圾收集器处理。我猜是这样的:

  • 数据库查询也是可枚举的,需要处理这些查询,因为它们可能持有数据库连接,这是比内存更稀缺的资源。

  • 为了正确处理这种情况,框架设计者决定只让枚举器实现Idisposable,所以契约是它们应该总是被处理掉;对于字符串、数组和列表等内存中的集合,这将是一个空操作,但它使整体设计比尝试使某些类型的枚举器实现不同的接口更简单。

这是正确的,还是我遗漏了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)