C# using用法

来源:互联网 发布:电影网站源码带采集 编辑:程序博客网 时间:2024/05/01 12:05

昨天的“【windows phone】simple note”中的代码中有一个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语句比较好。

0 0
原创粉丝点击