#c# #.net #.net-core #ado.net
#c# #.net #.net-ядро #ado.net
Вопрос:
Есть ли проблема со вторым использованием (фрагмент кода 2)? Если да, то в чем проблема?
// ---Code snippet 1---
IDbConnection connection = new SqlConnection(connStr)
using(connection)
{
connection.Open(); // Open a connection in “using”
todo...
}
// ---Code snippet 2---
IDbConnection connection = new SqlConnection(connStr)
connection.Open(); // Open a connection outside “using”
using(connection)
{
todo...
}
Ответ №1:
using
Инструкция — это просто встроенная языковая поддержка для правильной обработки IDisposable
объектов, с ее помощью вы можете убедиться, что ваши одноразовые объекты будут удалены, когда они должны быть.
В основном это переводится в пару try-finally с вызовом dispose в блоке finally. Подробнее об инструкции using вы можете прочитать здесь.
Тем не менее, вы должны поместить using
ключевое слово в первую инструкцию, в которой вы создаете одноразовый объект, чтобы правильная версия вашего кода была:
using (var connection = new SqlConnection(connStr))
{
connection.Open(); // Open a connection in “using”
todo...
}
Я не думаю, что размещение ключевого слова using имеет какое-либо значение для того, что делает или выглядит объект connection.
Комментарии:
1. Или, другими словами: обе версии в вопросе неверны