【问题标题】:IEnumerator: Is it normal to have an empty Dispose method?IEnumerator:有一个空的 Dispose 方法是否正常?
【发布时间】:2011-03-04 22:43:49
【问题描述】:

我正在编写一个IEnumerator<T> 类来迭代COM 集合我是wrappering。我注意到IEnumerator<T> 扩展了IDisposable,所以我需要实现Dispose 方法。

但是,我想不出我会放在那里的任何东西,因为我只有一个对集合的引用(我不希望在 foreach 的末尾处理它)和一个 int为索引。 Dispose方法留空正常吗?

【问题讨论】:

    标签: .net idisposable ienumerator


    【解决方案1】:

    是的。

    IEnumerator<T> 实现 IDisposable 以防您创建确实需要处理的枚举器。由于大多数枚举器不需要被释放,因此该方法通常为空。

    顺便说一句,您可以通过creating an iterator 更轻松地实现您的IEnumerator

    【讨论】:

    • 感谢yield 的提醒。我认为有更简单的方法。
    • 顺便说一句,yieldIEnumerator<T> 实现IDisposable 的原因之一——using 语句或finally 块进入Dispose
    • 对于 VB.NET 用户,请注意Yield 需要 Visual Studio 2012 或更高版本。
    • "IEnumerator<T> 实现 IDisposable 以防您创建一个确实需要处理的枚举器"这没有任何意义。为什么我不能在实际需要时自己指定IDisposable
    • @Pawcio:因为那样通过接口使用它的调用站点将不知道要处理它。
    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多