C # использование ключевого слова, правильное использование его - PullRequest
5 голосов
/ 02 марта 2012

какой из следующих вариантов лучше

Достаточно ли одного оператора использования?

Вариант 1:

using(SqlConnection con = new SqlConnection(constring))
{
   using(SqlCommand cmd = new SqlCommand())
   {
       .........................
       .........................
       .........................
   }
}

Вариант 2:

using(SqlConnection con = new SqlConnection(constring))
{
   SqlCommand cmd = new SqlCommand();
   .........................
   .........................
   .........................
}

Ответы [ 5 ]

15 голосов
/ 02 марта 2012

Как правило, проще всего следовать правилу: «Если тип реализует IDisposable, тогда используйте конструкцию using». Поэтому я бы выбрал вариант 1.

9 голосов
/ 02 марта 2012

Вам нужно обернуть их обоих, хотя вы можете заставить их выглядеть немного аккуратнее, если это вас беспокоит!

using (var conn = new SqlConnection(/* ... */))
using (var cmd = new SqlCommand(/* ... */))
{
    // ...
}
2 голосов
/ 02 марта 2012

Первый определенно лучше.

Даже когда есть связь между Соединением и Командой, которая делает внешнюю достаточной, вы не хотите полагаться на это или ожидать, что ваши читатели узнают.

И такие отношения всегда никогда не документируются и могут измениться в будущих выпусках.

1 голос
/ 02 марта 2012

Лучше использовать две команды с использованием (хотя есть альтернативный синтаксис ), когда у вас есть кратные значения.Для сборки мусора лучше явно указывать, когда вам нужен доступ к этим ресурсам.

1 голос
/ 02 марта 2012

Нет, этого не достаточно, как правило, заключайте в блок using каждый раз, когда вы создаете экземпляр IDisposable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...