Объявите ресурс вне оператора using

У меня есть вопрос по оператору C# using. Согласно документам, рекомендуется как объявлять, так и инициализировать ресурс (например, объект SqlConnection) внутри оператора using. У меня вопрос: если я только объявлю объект вне области использования (и инициализирую его как часть оператора использования), полностью ли он будет объявлен как часть оператора using? Мой вариант использования заключается в том, что мне нужно использовать объект SqlConnection вне области использования. (Я хотел бы вызвать SqlConnection.ClearPool на случай, если я получу какое-то конкретное исключение.


person LioH    schedule 30.05.2020    source источник
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