我正在執行IDataReader
,我想知道Dispose
的執行是否應該調用Close
或不。應該IDataReader :: Dispose調用IDataReader :: Close?
另外,應該Close
請致電Dispose
?
我的猜測是,Close
不應該叫Dispose
和Dispose
可以呼叫Close
,因爲據我所知,你應該能夠調用Dispose
多次你在任何物體想要的。但這只是一個猜測,我寧願聽到專家的意見。
我正在執行IDataReader
,我想知道Dispose
的執行是否應該調用Close
或不。應該IDataReader :: Dispose調用IDataReader :: Close?
另外,應該Close
請致電Dispose
?
我的猜測是,Close
不應該叫Dispose
和Dispose
可以呼叫Close
,因爲據我所知,你應該能夠調用Dispose
多次你在任何物體想要的。但這只是一個猜測,我寧願聽到專家的意見。
Close()
和Dispose()
應該做同樣的事情(應該打另一個)。
但是,Close()
不需要多次調用。
你應該繼承基類DbDataReader
類而不是自己重新實現整個事情;如果是這樣,您需要覆蓋摘要Close()
。
.Dispose()
應該完成一件事情:釋放非託管資源。因此,您應該調用.Close()
當且僅當調用該函數是釋放非託管資源的正確方法。在這種情況下,我會說這是真的(它會釋放一個數據庫連接),所以你應該調用這個函數。
它們幾乎都是相同的東西,除了Close可以被調用超過1次而沒有發生異常。
如果您多次使用該對象,請實現.Close,如果只執行一次,請實現.Dispose()。
我剛剛注意到它是IDataReader接口vs該類對不起SLaks – MethodMan 2011-12-16 19:34:20