鉴于我已经编写了一个实现IEnumerable
的类,并返回IEnumerator
,而不仅仅是IDisposable
作为普查员,而是完成枚举后需要Dispose()
所需的托管资源,只要我的枚举器在其{{1}中正确处理这些托管资源,我相信以下将Dispose()
这些托管资源实施?
IDisposable
编辑:这个问题看似类似于一个与之类似的mod,但它在语义上与IMO不同(我在提出问题之前就已经看过了)
答案 0 :(得分:7)
是的,您可以依赖于LINQ方法中迭代器上Dispose()
的调用。
在Microsoft发布的reference code中,迭代器的使用分为三类:
foreach
循环中使用,可确保调用Dispose()
或while
循环一起使用;这些迭代器是明确处理的using
块内获取迭代器,确保自动处理。在所有这些情况下,库确保在完成时调用迭代器的Dispose()
方法。