На это можно ответить в другом месте, но после выполнения небольшого поиска я не нашел много информации по этому вопросу вне нормального контекста using
.
Мне любопытно, будут ли удалены все объекты, созданные в блоке using
, а также исходный объект.
Вот контекст:
Обычно я делал бы что-то вроде этого:
using (var conn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand(commandText, conn))
{
//Do everything I need to here
}
Я знаю, что оба conn
и cmd
выходят за пределы области действия в данный момент и удаляются из-за прекрасного ключевого слова using
.
Мне любопытно, если бы следующие правила утилизации применимы к следующему утверждению:
using (var cmd = new (SqlCommand(commandText, new SqlConnection(ConnectionString)))
{
//Do everything I need here
}
Будет ли объект SqlConnection
, который был создан inline в статусе using
, удаляться, когда cmd
выходит за пределы области видимости и удаляется, потому что он связан с объектом?
Также будет синтаксически предпочтительным? Я лично считаю, что второй чище, но я понимаю, что читаемость также может сыграть здесь.