微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么需要处理枚举器?

如何解决为什么需要处理枚举器?

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。