在 using 语句之外声明资源

Declare a resource outside the using statement

我对 C# using 语句有疑问。根据文档,最佳做法是在 using 语句中同时声明和初始化资源(例如 SqlConnection 对象)。我的问题是:如果我只在 using 范围之外声明对象(并将其初始化为 using 语句的一部分),它是否完全等于将其声明为 using 语句的一部分?我的用例是我需要在 using 范围之外使用 SqlConnection 对象。 (我想在上面调用 SqlConnection.ClearPool,以防出现某些特定异常。

这两种情况是等价的。但是,当您在 using 语句 的范围之外声明一个变量时,该变量将在 using 语句 的范围完成后被释放,但是仍然在范围内。在 using 语句 的范围之后意外使用变量可能会导致抛出异常。这被认为是不好的做法并被避免。我从来没有理由在using语句之前声明变量。