當我忘記處理實現IDisposable的對象時,Visual Studio 2008可以配置爲給我一個警告嗎?當我忘記處理一個IDisposable對象時,Visual Studio會提示我嗎?
回答
Visual Studio中,本身並不具備這一功能,但CodeRush你可以有設計時的警告和重構使用塊在需要的地方插入。
我不認爲它可以在編譯時完成。
但是,它可以在運行時完成。
我創建了一個抽象類'Disposable'(它實現了IDisposable,並實現了Disposable模式)。 在終結器中,當調用終結器時,我發出一個Assert,並且該對象尚未處理。
我已經根據這個伊恩·格里菲思的文章:
http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
我不知道,如果你正在使用C#或VB,但在C#中,「最佳實踐」的方式處理IDisposable類型的對象是將代碼放置在使用塊中。
「using語句允許程序員指定何時使用資源的對象應該釋放它們,提供給using語句的對象必須實現IDisposable接口,該接口提供了Dispose方法,該方法應釋放對象的資源。 - MSDN Link
HTH,
-Dan
這不以任何方式回答問題。 – 2009-07-06 19:19:34
如果我創建一個實現IDisposable的對象,然後忘記將它放在使用塊中,Visual Studio 2008可以配置爲給我一個警告嗎? – ChrisW 2009-07-06 19:28:18
如果你打開FxCop的設計規則,它會告訴你,當你不實現IDisposable,你有哪些實現IDisposable成員,像這樣:
class Program
{
private DataTable NotDisposed;
public Program()
{
NotDisposed = new DataTable();
}
static void Main()
{
}
}
- 1. 當我開始一個新項目時,Visual Studio 2012會忘記SDL配置?
- 2. 當我忘記分配String.Replace()時,我可以讓Visual Studio警告我嗎?
- 3. 當我點擊一個新的對象時忘記以前的點擊?
- 4. 處置一個對象是否處理所有的IDisposable屬性?
- 5. 如果using語句引發異常,我該如何處理一個IDisposable對象?
- 6. 當Visual Studio停止調試時,我真的不能清理嗎?
- 7. 我有錯誤,當我處理這個對象,我創建
- 8. Qt「忘記」鏈接我的一個「moc_MyClass.o」對象
- 9. 哪個命令提示符的Visual Studio我會用?
- 10. 我們有一個java隊列對象或機制來處理批處理嗎?
- 11. MS Visual Studio 2008 - Qt Addin - UI對象不會出現提示
- 12. 我的一個Mongoid模型忘記了這是一個數據庫對象
- 13. Java(處理環境)將不會爲我提供當地時間
- 14. Visual Studio 2010 Beta 1會干擾我的Visual Studio 2008安裝嗎?
- 15. 我可以對IDisposable對象使用「模糊」參數傳遞嗎?
- 16. 爲什麼Visual Studio 2012和ReSharper 7忘記顯示Intellisense工具提示?
- 17. 當我編碼時Delphi沒有顯示對象/組件「提示」
- 18. Visual Studio提示我簽出javascript文件
- 19. C#在超出範圍時自動「處置」IDisposable對象嗎?
- 20. WCF服務和IDisposable,我是否清理管理對象?
- 21. 爲什麼Visual Studio將我的.cfg文件當作xml處理?
- 22. TeamCity Visual Studio插件忘記憑證
- 23. Visual Studio忘記引用HTML屬性
- 24. Visual Studio拒絕忘記斷點?
- 25. Ajax響應是整數,並且我不能處理它,當我提醒它我得到[對象,對象]
- 26. 我可以對TFS,Visual Studio和ALM提出質疑嗎?
- 27. 一個OnGestureListener對象可以處理兩個GestureDetector對象嗎?
- 28. 我應該定義一個函數來處理一個字符串對象或一個unicode對象嗎?
- 29. 我應該爲每個地理處理工具創建一個新的地理處理器對象嗎?
- 30. 當我擁有一個對象時,我可以調用靜態java方法嗎?
我會反對其處理處置基類。由於.NET是單繼承,因此這會將您鎖定到一個非常嚴格的繼承鏈,這需要您的DisposeBase位於頂端。 – 2009-07-06 19:13:50
除此之外,您可以使用「System.ComponentModel.Component」 – 2009-07-06 19:26:54