我在学校学习了 C#,现在我开始学习 Java。
在 Java 中有“try with ressources”,它会在不再使用时关闭/处理东西(如扫描仪)。
等效的 C# 是 using-Statement,它的作用基本相同。
它们真的完全一样吗,或者有什么不同(比如他们在后台做什么)?
我在学校学习了 C#,现在我开始学习 Java。
在 Java 中有“try with ressources”,它会在不再使用时关闭/处理东西(如扫描仪)。
等效的 C# 是 using-Statement,它的作用基本相同。
它们真的完全一样吗,或者有什么不同(比如他们在后台做什么)?
不,它们并不完全相同。
try-with-resources
语句可以声明多个不同类型的变量;using
语句可以声明多个变量,但它们都必须是相同的类型using
语句不必声明任何变量;using (foo)
很好 - 而 try-with-resources 语句using
仍然是可赋值的,尽管它仍然是被释放的初始值,而不是块末尾的值;语句中声明的变量try-with-resources
不能在块内赋值try-with-resources
语句可以有catch
和finally
块,而你需要在 C#中有一个单独的try
/catch
或try
/ catch
/块finally
using
语句体抛出异常,然后Dispose
方法抛出异常,则只有后一个异常可用;在try-with-resources
关闭异常被“抑制”(因此语句结果是try
块中的异常)但关闭异常仍然可以使用Throwable.getSuppressed
.