【问题标题】:Declare a resource outside the using statement在 using 语句之外声明资源
【发布时间】:2020-05-30 21:06:16
【问题描述】:

我对 C# using 语句有疑问。根据文档,在 using 语句中声明和初始化资源(例如,SqlConnection 对象)是最佳实践。我的问题是:如果我只在 using 范围之外声明对象(并将其初始化为 using 语句的一部分),是否完全等于将其声明为 using 语句的一部分?我的用例是我需要在 using 范围之外使用 SqlConnection 对象。 (我想打电话给SqlConnection.ClearPool,以防我遇到一些特定的异常。

【问题讨论】:

  • 在幕后添加 finally 的概念,所以像 using(var x = new Instance){ whatevey } 等于 try{ var x=new Instance } finally{x.Dispose } stackoverflow.com/questions/5563886/…
  • 在 using 语句之前声明变量,然后在 using 语句中初始化变量不是问题。 using 语句的范围是在退出 using 块时释放该变量。但是,如果不重新初始化它,您将无法再使用该变量。

标签: c# .net idisposable sqlconnection using-statement


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2013-06-08
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多