.NET使用-Syniz和Java try-with-resources之间的区别

时间:2015-02-03 08:03:43

标签: java c# using-statement try-with-resources

我在学校学习了C#,现在我开始学习Java了。

在Java中,有#34;尝试使用ressources"当它不再使用时,它将关闭/处理东西(如扫描仪)。

等效的C#是using-Statement,基本上也是这样。

他们真的完全相同,还是有任何差异(比如他们在后台做的事情)?

1 个答案:

答案 0 :(得分:10)

不,他们完全没有相同。

  • try-with-resources语句可以声明不同类型的多个变量; using语句可以声明多个变量,但它们都必须属于同一类型
  • using语句没有 来声明任何变量; using (foo)很好 - 而尝试资源声明
  • using语句中声明的变量仍然是可分配的,尽管它仍然是处理的初始值,而不是块末尾的值;在try-with-resources语句中声明的变量无法在块
  • 中分配
  • try-with-resources语句可以包含catchfinally个字段,而您需要单独try / catch或{{ C#
  • 中的1}} / try / catch阻止
  • 如果finally语句的主体抛出异常,然后using方法抛出异常,则只有后一个异常可用;在Dispose中,关闭的例外是#34;被抑制" (因此语句结果是try-with-resources块的例外),但仍然可以使用try检索结束例外。