簡體   English   中英

正確實施IDisposable

[英]Proper implementation of IDisposable

是否有必要保證自己不會使用已處理的課程? 我只想在我的IDisposable類的所有方法中添加以下兩行:

if (disposed)
    throw new InvalidOperationException("Attempt to use disposed object!");

這似乎不對。

我最好的答案取決於它。

一次性類僅用於單個項目嗎?

  • 可能沒有(雖然相同效果的斷言可能並不壞)

該課程是由您自己或小團隊以外的人使用的嗎?

  • 大概是

訪問被處置對象的副作用是什么?

  • 如果它會拋出異常,上面的內容將使你的生活更容易調試,但最終結果在大多數情況下都是一樣的
  • 如果它能正常工作(即重新分配任何必要的資源等)那么誰真正關心
  • 如果它會導致不明確或不可預測的行為,那么就不會拋出異常然后肯定,特別是如果你回答否,那么上述問題是肯定的

我建議你所做的就是矯枉過正。 我同意dkackman的說法,你應該像對那些可以無聲地失敗而不是為所有人失敗的成員那樣做。 您可以像Form類那樣執行並提供IsDisposed屬性。 如果他們還不知道對象是否被處置,那么開發人員有責任自行檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM