Да, абсолютно.Метод Dispose
вызывается, однако оператор using
выполняется, если только он не был внезапным завершением всего процесса.Наиболее распространенные случаи:
- A
return
в блоке - Исключение, которое выдается (и не перехватывается) в блоке
- Достигается конецблок, естественно,
В основном оператор using
в основном является синтаксическим сахаром для блока try
/ finally
- и finally
имеет все те же свойства.
EDIT: Из раздела 8.13 спецификации C # 4 :
using
оператор разделен на три части: приобретение, использование и утилизация.Использование ресурса неявно заключено в оператор try
, который включает в себя предложение finally
.Это предложение finally
удаляет ресурс.
Оператор finally
описан в разделе 8.10 спецификации:
Операторы блока finally
всегда выполняются, когда управление покидает оператор try
.Это верно, если передача управления происходит в результате нормального выполнения;в результате выполнения оператора break
, continue
, goto
или return
;или в результате распространения исключения из оператора try
.