假设我们创建一个IDisposable对象,并且有一个try-catch-finally块
var disposable= CreateIDisposable();
try{
// do something with the disposable.
}catch(Exception e){
// do something with the exception
}finally{
disposable.Dispose();
}
如何将其转换为using块?
如果是
var disposable= CreateIDisposable();
try{
// do something with the disposable.
}finally{
disposable.Dispose();
}
我会转换为
using(var disposable= CreateIDisposable()){
// do something with the disposable.
}
我该如何使用catch块?
try{
using(var disposable= CreateIDisposable()){
// do something with the disposable.
}
}catch(Exception e){
// do something with the exception
}
答案 0 :(得分:3)
您已经关闭。相反。
实际上,CLR没有try
/ catch
/ finally
。它具有try
/ catch
,try
/ finally
和try
/ filter
(这是when
的作用子句用于catch
)。 C#中的try
/ catch
/ finally
只是try
/ {的catch
块内的try
/ try
{1}}。
因此,如果将其展开并将finally
/ try
转换为finally
,则会得到以下信息:
using