В приведенном ниже примере соединение будет закрыто и удалено при возникновении исключения, если оно находится внутри using
оператора?
using (var conn = new SqlConnection("..."))
{
conn.Open();
// stuff happens here and exception is thrown...
}
Я знаю, что приведенный ниже код гарантирует, что это так, но мне любопытно, как это делает оператор using.
var conn;
try
{
conn = new SqlConnection("...");
conn.Open();
// stuff happens here and exception is thrown...
}
// catch it or let it bubble up
finally
{
conn.Dispose();
}
Связанный:
Как правильно обеспечить закрытие SQL-соединения при возникновении исключения?
c#
asp.net
using-statement
Брайан Ким
источник
источник
Вот как рефлектор декодирует IL, сгенерированный вашим кодом:
Итак, ответ - да, он закроет соединение, если
выдает исключение.источник
Dispose () не вызывается в этом коде.
источник