- Использующий блок избавится от OdbcConnection.
- Обычные правила области видимости работают для всего, что объявлено внутри блока using.
- Блок using не будет очищать любые другие IDisposable объекты. Это только убирает заявленный предмет
- обратите внимание, что вы можете вкладывать, используя блоки, или если элементы одного типа, несколько элементов могут быть инициализированы одновременно.
См. Верхний бит моего другого ответа для Как использовать ключевое слово using в C # для получения дополнительной информации.
Я должен также упомянуть, что вы можете закрыть (удалить) соединение, как только закончите с ним, чтобы освободить ресурс. В рекомендациях говорится, что вызывающая сторона должна иметь возможность повторно вызывать метод dispose. Блок using по сути является просто сетью безопасности и позволяет в большинстве случаев писать более понятный код.
[Изменить]
например множественная инициализация при использовании: инициализируйте более одного объекта в одном и том же использовании без необходимости вложения блоков, если объекты одного типа:
using (Bitmap b1 = new Bitmap("file1"), b2 = new Bitmap("file2"))
{ ... }
Джоэл Коухорн упомянул укладку, которая является вложением, но пропускает фигурные скобки, так же как вы можете опустить фигурные скобки в выражении for
или if
. Пользовательский интерфейс не переформатируется с отступом. Мне было бы любопытно, как выглядит IL.
using(Bitmap b = new Bitmap("filex"))
using(Graphics g = Graphics.FromImage(b))
{
}
Ошибочно использовать разные объекты, используя error CS1044: Cannot use more than one type in a for, using, fixed, or declaration statement.
// error CS1044
using(Bitmap b = new Bitmap("filex"), Graphics g = Graphics.FromImage(b))