的雖然有不少Q &的作爲與IDisposable
要在SO發現,我暫時還沒有發現一個答案:明確實施了IDisposable
我通常遵循慣例,當一個我類擁有一個IDisposable
對象,那麼它也執行IDisposable
並在擁有的對象上調用Dispose
。但是最近我遇到了一個明確實施了IDisposable
的課程,因此阻止我直接調用Dispose
,迫使我將其投入使用,這讓我感到煩惱和不必要。
所以這個問題:爲什麼和什麼時候會想要使用明確的接口實現IDisposable
?我知道明確地實現一個接口有完美的和有效的理由,但是關於IDisposable
,原因對我來說不是很清楚。
這些「好的和有效的原因」是什麼,爲什麼他們不應該支持'IDisposable'呢?爲什麼將一個對象投射到「IDisposable」是「煩人的」? – chiccodoro 2011-04-07 07:09:44
有時,類有必要實現兩個或更多個成員名稱衝突的接口。對於明確的界面命名來說,這是一個很好且適當的用法。我同意OP的意見,任意命名清理方法的東西除Dispose之外是愚蠢的。即使一個類有一個Close方法,這並不意味着它也不應該有一個Dispose方法。由於在調用Close之後調用Dispose的情況最差,所以這兩種方法有什麼不對? – supercat 2011-04-07 07:21:41
@chiccodoro:IMO顯式接口實現大多在需要實現兩個具有衝突成員的接口時非常有用。在任何其他情況下,如果有一個對象可以轉換爲接口而不是「存在」,那麼該接口是不自然且令人討厭的。 – 2011-04-07 07:22:30