【发布时间】:2022-11-30 02:45:36
【问题描述】:
using (T resource = expression)
embedded-statement
被编译器翻译成如下代码:
{
T resource = expression;//Shouldn't this statement be moved inside the try block?
try
{
embedded-statement
}
finally
{
if (resource != null)
((IDisposable)resource).Dispose();
}
}
我的问题是:为什么在 try 块周围有一个额外的 {}?不应该将第一条语句移到 try 块内吗?
MSDN 解释说:
前面的代码示例在编译时扩展为以下代码(注意额外的花括号为对象创建了有限的范围):
但根据另一个MSDN页面,
通过使用 finally 块,您可以清理任何资源 分配的在 try 块中
【问题讨论】:
标签: c#