C#:使用"using"初始化变量

Nic*_*aro 5 c#

关于以下代码:

using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
  code...
}
Run Code Online (Sandbox Code Playgroud)

SqlConnection是否使用"using"初始化,因此在括号后取消引用/销毁?

请在必要时更正我的提问.

wom*_*omp 8

using是正确调用Dispose()对象的语法快捷方式.

在大括号中的代码完成执行后,Dipose()会自动调用包含在using语句中的对象.

在编译时,上面的代码实际上将扩展为

{
  SqlConnection sqlConnection = new SqlConnection(connectionString);
  try
  {
    // .. code
  }
  finally
  {
    if (sqlConnection!= null)
      ((IDisposable)sqlConnection).Dispose();
  }
}
Run Code Online (Sandbox Code Playgroud)

你可以看到它是一个方便的快捷方式.

  • 我会把使用放在try-catch中. (3认同)

Dat*_*han 6

是.using语句只是语法糖,并由编译器翻译成类似的东西

SqlConnection sqlConnection;
try
{
  sqlConnection = new SqlConnection(connectionString);
  // code...
}
finally
{
  if (sqlConnection != null)
     sqlConnection.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

  • 它还将名称"sqlConnection"范围限定为该块,因此如果您在处理后尝试使用它,则会出现编译器错误. (6认同)