这是我遇到的一个电话面试问题:是否有时不会在范围由 using block 声明的对象上调用 Dispose?
我的回答是否定的 - 即使在 using block 期间发生异常,Dispose 仍将被调用。
面试官不同意,说如果using
被包裹在try
-catch
block 中,那么在你进入的时候Dispose不会被调用捕获 block 。
这与我对结构的理解背道而驰,而且我一直没能找到任何可以支持面试官观点的东西。他是对的还是我误解了这个问题?
最佳答案
导致在 using block 中不调用 Dispose 的四种情况:
- 在 using block 内时机器出现电源故障。
- 您的机器在 using block 内部时被原子弹熔化。
- Uncatchable exceptions像
StackOverflowException
、AccessViolationException
和 possibly others . - Environment.FailFast
关于c# - 是否存在不会为 'using' block 调用 Dispose 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595372/