请参阅我的示例代码:如何检测对象是否在“使用”范围内?
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