ASP.NET:如果我在创建对象时使用它有什么好处

时间:2009-08-10 09:39:00

标签: asp.net

在ASP.NET中,我看到有人像这样编码

using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString))
{

   // Do the datatbase transactions

}

它与这个有什么不同

 SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString)
 // Do the datatbase transactions

使用其中一个是否有提高性能/速度的效果?

7 个答案:

答案 0 :(得分:3)

  

using语句允许   程序员指定何时对象   使用资源应该发布   他们。提供给使用的对象   声明必须执行   IDisposable接口。这个界面   提供Dispose方法,其中   应释放对象的资源。

     

也可以退出using语句   当using语句结束时   达到或抛出异常   和控制离开语句块   在声明结束之前。

这里可以找到一篇好文章

Understanding the 'using' statement in C#

答案 1 :(得分:2)

这只是一条捷径。 :)

using (var foo = new Foo())
    foo.bar();

等于:

 Foo foo = new Foo();
 try
  {
      foo.bar();
  }
  finally
  {
    if (foo != null)
      ((IDisposable)foo).Dispose();
  }

使用关键字确保将处置对象(它必须实现IDisposable) 它在处理外部资源(数据库连接,文件流等)时很有用 - 尽管可能发生错误,它们仍会被释放。

答案 2 :(得分:1)

使用:定义一个范围,在该范围之外将放置一个或多个对象。

所以它只是语法而不是创建对象然后处理它。

有关MSDN

的更多详情

答案 3 :(得分:0)

通常,您应该对实现using的任何对象使用IDisposable语法 - 例如,SqlConnection

using语句确保在(几乎)所有情况下对象在块的末尾正确放置,即使发生异常。

没有任何直接的速度/性能差异,但如果您不处理IDisposable个对象(通常使用using),那么您可能会遇到问题,因为重要资源尚未整理。

使用using是很好的做法,几乎总是正确的做事方式。 使用using通常是一个坏主意,除非你完全确定你正在做什么以及为什么。

答案 4 :(得分:0)

在using构造中创建的对象在构造中具有生命周期(大括号{})。如果您注意到只能创建实现IDisposable接口的那些成员。它只是意味着在使用构造代码之后,编译器将自动在您创建的对象上调用dispose方法。它有助于垃圾收集。

与SqlConnection对象的情况一样,我们必须调用dispose,否则ado.net连接池(管理与数据库的连接)将为另一个传入请求分配新连接,而不是重用旧连接池。连接池只是最小化资源的固有方式。获取与数据库的连接所花费的时间。

参见: 连接池 IDisposable的

答案 5 :(得分:0)

using语句是

的快捷方式
try
{
    /* do the work here with obj */

}
finally
{
    if (obj != null)
        obj.Dispose();
} 

答案 6 :(得分:-1)

using语句将自动调用finally,即一旦使用块完成,它将丢弃该对象。

using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString))
{
   // Do the datatbase transactions
}

相当于:

 SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString)
// Do the datatbase transactions
    myConnection.Close();
    myConnection.Dispose()