Tag: 定稿

“Dispose”只能用于包含非托pipe资源的types吗?

我最近和同事讨论了实现IDisposable的Dispose和types的价值。 我认为在实施IDisposable的时候,尽可能快地清理types是有价值的, 即使没有非托pipe资源可以清理 。 我的同事有不同的看法, 如果您没有任何非托pipe资源,则不需要实施IDisposable ,因为您的types最终将被垃圾收集。 我的观点是,如果你有一个ADO.NET连接,你想尽快closures,那么实现IDisposable并using new MyThingWithAConnection()将是有道理的。 我的同事回答说,在封面下,一个ADO.NET连接是一个非托pipe资源 。 我的答复是, 一切最终都是非托pipe资源 。 我知道推荐的一次性模式 ,如果释放托pipe和非托pipe资源,如果Dispose被调用,但是只有通过终结器/析构函数 调用时 才是免费的非托pipe资源 (并且前段时间博客提醒消费者不恰当地使用您的IDisposabletypes ) 所以,我的问题是,如果你有一个不包含非托pipe资源的types,是否值得实现IDisposable ?