好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

谈C# using的用法与好处

之前的一篇文章中的代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来 using指令调用了一个方法——Dispose()方法 。而Dispose()方法的作用就是释放所有的使用资源。

例:

?

public void ExecuteCommand( string connString, string commandString )

{

  SqlConnection myConnection = new SqlConnection( connString );

  SqlCommand mySqlCommand = new SqlCommand( commandString,

   myConnection );

 

  myConnection.Open();

  mySqlCommand.ExecuteNonQuery();

}

这个例子中的两个可处理对象没有被恰当的释放:SqlConnection和SqlCommand。两个对象同时保存在内存里直到析构函数被调用。

解决 这个问题的方法就是在使用完命令和链接后就调用它们的Dispose:

?

public void ExecuteCommand( string connString, string commandString )

{

  SqlConnection myConnection = new SqlConnection( connString );

  SqlCommand mySqlCommand = new SqlCommand( commandString,

   myConnection );

 

  myConnection.Open();

  mySqlCommand.ExecuteNonQuery();

 

  mySqlCommand.Dispose( );

  myConnection.Dispose( );

}

使用using语句也可以很好的实现此功能,而且代码很清晰:

?

public void ExecuteCommand( string connString, string commandString )

{

  using ( SqlConnection myConnection = new   SqlConnection( connString ))

  {

   using ( SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection ))

   {

    myConnection.Open();

    mySqlCommand.ExecuteNonQuery();

   }

  }

}

当你在一个函数内使用一个可处理对象时,using语句是最简单的方法来保证这个对象被恰当的处理掉。当这些对象被分配时,会被编译器放到一个try/finally块中。

?

SqlConnection myConnection = null ;

 

// Example Using clause:

using ( myConnection = new SqlConnection( connString ))

{

  myConnection.Open();

}

 

 

// example Try / Catch block:

try {

  myConnection = new SqlConnection( connString );

  myConnection.Open();

}

finally {

  myConnection.Dispose( );

}

有时候使用try/finally块的时候会发现如果发生错误,程序不会报错。本人感觉还是使用using语句比较好。
以上就是本文的全部内容,希望对大家的学习有所帮助。

dy("nrwz");

查看更多关于谈C# using的用法与好处的详细内容...

  阅读:38次