Я использую оператор using для SqlConnection
. Это хорошо для производительности, потому что силы, вызывающие Dispose(), просто освобождают соединение с пулом раньше.Может ли оператор using заменить фигурные скобки?
Однако я понял, что объект, созданный при использовании, не может быть переопределен. Я не могу сделать так:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
мне было интересно, если я могу заменить, используя, и сделать что-то вроде этого:
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
SqlConnection
не будет после того, как последний подъездом }
скобки. Будет ли Dispose() вызывается немедленно, когда объект выходит из области видимости?
Спасибо. Если дело доходит до закрытия соединений, я бы, конечно, вызывал connection.Close(), но я не писал его в коде выше. – nan
Даже если вы явно вызываете Close(), ваш второй пример по-прежнему может оставить открытое соединение, если возникло исключение. Не только использование вызова Dispose, когда выполнение покидает этот блок, оно также вызывает его при возникновении исключения. – ThatBlairGuy