c# - 是否存在不会为 'using' block 调用 Dispose 的情况?

标签 c# dispose using

这是我遇到的一个电话面试问题:是否有时不会在范围由 using block 声明的对象上调用 Dispose?

我的回答是否定的 - 即使在 using block 期间发生异常,Dispose 仍将被调用。

面试官不同意,说如果using被包裹在try-catch block 中,那么在你进入的时候Dispose不会被调用捕获 block 。

这与我对结构的理解背道而驰,而且我一直没能找到任何可以支持面试官观点的东西。他是对的还是我误解了这个问题?

最佳答案

导致在 using block 中不调用 Dispose 的四种情况:

  1. 在 using block 内时机器出现电源故障。
  2. 您的机器在 using block 内部时被原子弹熔化。
  3. Uncatchable exceptionsStackOverflowExceptionAccessViolationExceptionpossibly others .
  4. Environment.FailFast

关于c# - 是否存在不会为 'using' block 调用 Dispose 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595372/

相关文章:

c# - 在 VisualStudio 调试器退出时执行代码

C# 遍历 bool 值

java - Java的AudioFormat.isBigEndian和AudioFormat.Encoding.PCM_SIGNED的C#等效项

c# - 如何导出 C# dll 方法/函数以在 C++ 中使用它

C#:带有大括号和匿名对象的 `using` 语句的用途

c++ - 减轻头文件中的长限制

c# - 方法中类名的别名

c# - 可选参数与空参数方法和重载的构造函数

c# - 如何提取使用 "using"关键字且一次性的方法

c# - 为什么 Dispose() 应该是非虚拟的?