У меня есть вопрос по оператору C# using
. Согласно документам, рекомендуется как объявлять, так и инициализировать ресурс (например, объект SqlConnection
) внутри оператора using. У меня вопрос: если я только объявлю объект вне области использования (и инициализирую его как часть оператора использования), полностью ли он будет объявлен как часть оператора using
? Мой вариант использования заключается в том, что мне нужно использовать объект SqlConnection
вне области использования. (Я хотел бы вызвать SqlConnection.ClearPool
на случай, если я получу какое-то конкретное исключение.
Объявите ресурс вне оператора using
comment
концепция использования для добавления finally под капотом, поэтому что-то вроде использования (var x = new Instance){ what evey } равно try{ var x=new Instance } finally{x.Dispose} stackoverflow.com/questions/5563886/
- person maytham-ɯɐɥʇʎɐɯ   schedule 30.05.2020
comment
Объявление переменной перед оператором использования и последующая инициализация переменной в операторе использования не является проблемой. Область использования инструкции заключается в удалении этой переменной при выходе из блока использования. Но тогда вы больше не сможете использовать эту переменную без ее повторной инициализации.
- person Steve   schedule 30.05.2020
Ответы (1)
Оба сценария эквивалентны. Но когда вы объявляете переменную вне области действия оператора using, переменная будет удалена после завершения области действия оператора using, но все равно останется в области действия. Случайное использование переменной после области действия оператора using может привести к возникновению исключения. Это считается плохой практикой и ее избегают. У меня никогда не было причин объявлять переменную перед оператором использования.
person
rabink
schedule
30.05.2020