在.NET中,是否有一個簡單的方法可以讓類在超出範圍時被通知?.NET即時超出範圍通知?
2
A
回答
2
是的,有些語言。當C++/CLI的非堆分配超出範圍時(有效地爲它們提供與正常C++中的堆棧分配資源相同的語義),將向IDisposable實現者發出Dipose調用。此外,〜Classname的C++/CLI析構函數語法成爲Dispose的實現(並使類實現IDisposable)。
隨着時間的推移,我希望有傳統確定性破壞的其他語言來採用這個策略。正如其他人所提到的,你可以在C#中用「using」來模擬它,但它不完全相同。
1
如果它實現了IDisposable,並且您正在使用使用塊,當然。
3
如果需要清理內存以外的資源,實現IDisposable與using
塊創建對象號。如果你需要清理內存,你真的可以把它留給垃圾收集器。
0
不,沒有。
0
不,在任何.NET語言中都沒有確定性的定稿。垃圾收集器負責完成應用程序中沒有根的對象。
0
如果實現IDisposable,你的Dispose()方法會發現:
using (var c = new YourClassImplementsIDisposable())
{
// Stuff happens
}
// c.Dispose has been called
否則就沒有,因爲你的目標只是 '掛出',直到GC
0
你可以使用一個終結。它會被稱爲垃圾收集,但不是在離開示波器後立即調用。
http://www.switchonthecode.com/tutorials/csharp-tutorial-object-finalizers
相關問題
- 1. 超出半徑範圍時發出通知谷歌地圖android
- 2. PreparedStatement拋出索引超出範圍時,它不超出範圍
- 3. 當對象超出範圍/得到無效時收到通知
- 4. ARM AArch64彙編:立即超出範圍
- 5. RowIndex超出範圍
- 6. 蟒:超出範圍
- 7. Javascript:超出範圍?
- 8. android:pointerIndex超出範圍
- 9. NSNumber超出範圍?
- 10. IndexError ...超出範圍,
- 11. NSURL超出範圍
- 12. SDL_image超出範圍
- 13. googletesting超出範圍
- 14. arraylist超出範圍
- 15. Java超出範圍
- 16. NSDate超出範圍
- 17. List.nub超出範圍
- 18. nsstring - 超出範圍
- 19. 嘿即時得到的索引超出範圍的可變
- 20. 索引1超出範圍時出錯
- 21. 如何通知Workflow Foundation 4中的變量超出範圍?
- 22. AngularJS綁定變量超出範圍並通知更新?
- 23. VB.NET AppendText通過(超出範圍)
- 24. 索引超出範圍(範圍可變)
- 25. deleteCharactersInRange:範圍或索引超出範圍'
- 26. NSString範圍或索引超出範圍
- 27. 列表索引超出範圍,即使輸出正確?
- 28. 小時超出範圍在golang.parse
- 29. 當UITableViewCell超出範圍時檢測到
- 30. 成員函數何時超出範圍?
雖然他並沒有詢問最終定稿的問題,但他詢問是否被通知。如果你使用C++/CLI(VS2005中首次出現的託管C++的後繼者)編程,那麼你可以聲明一個對象的引用,就好像它是一個自動變量。如果該對象的類實現了IDisposable,它將在超出範圍時通知它。這是C#恕我直言中遺漏的功能。 – U62 2009-05-29 18:25:00