我在学校学过 C#,现在我开始学习 Java。
在 Java 中有“try with ressources”,它会在不再使用时关闭/处理一些东西(比如 Scanner)。
等效的 C# 是 using-Statement,基本上做同样的事情。
它们真的完全相同,还是有任何差异(比如它们在后台所做的事情)?
最佳答案
不,它们不完全相同。
try-with-resources
语句可以声明多个不同类型的变量;using
语句可以声明多个变量,但它们必须是同一类型using
语句没有声明任何变量;using (foo)
很好 - 而 try-with-resources 语句- 在
using
语句中声明的变量仍然是可赋值的,尽管它仍然是释放的初始值,而不是 block 末尾的值;在try-with-resources
语句中声明的变量不能在 block 内赋值 try-with-resources
语句可以有catch
和finally
block ,而你需要有一个单独的C# 中的 try
/catch
或try
/catch
/finally
block- 如果
using
语句体抛出异常,然后Dispose
方法抛出异常,则只有后一个异常可用;在try-with-resources
中,关闭异常被“抑制”(因此语句结果是try
block 中的异常)但关闭异常仍然可以使用检索Throwable.getSuppressed
。
关于java - .NET using-Statement 和 Java try-with-resources 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28294028/