如何在C#中将try-catch-finally块转换为using语句?

时间:2020-02-24 23:42:49

标签: c# try-catch using try-catch-finally

假设我们创建一个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
}

1 个答案:

答案 0 :(得分:3)

您已经关闭。相反。

实际上,CLR没有try / catch / finally。它具有try / catchtry / finallytry / filter(这是when的作用子句用于catch)。 C#中的try / catch / finally只是try / {的catch块内的try / try {1}}。

因此,如果将其展开并将finally / try转换为finally,则会得到以下信息:

using