請參閱我的示例代碼:如何檢測對象是否在「使用」範圍內?
var testObject = new SomeClass();
using (testObject)
{
//At this point how can the testObject implicitly know
//if it is placed inside a 'using' scope?
// In other words, how can testObject know that
// .SomeAction() is being called from within a 'using' scope?
testObject.someAction();
}
你不能,你不應該。 ** using **語句是try/finally的語法糖,它手動調用Dispose()方法。兩者都是完全有效的用例,因此你的方法顯式檢查using語句是不恰當的(即使它可以 - 它不能)。 – 2010-08-31 21:18:36
爲什麼testObject應該知道它在「使用範圍」中?只有編譯器必須知道在離開示波器時調用dispose。 – 2010-08-31 21:19:17
這裏真正的問題是「爲什麼」你爲什麼想知道它是否在使用範圍內?如果它應該在使用範圍內,請圍繞它創建一個包裝類。 – McKay 2010-08-31 21:22:26