您的位置:首页 > 编程语言 > C#

【C#】using用法

2012-03-26 08:47 274 查看
昨天的“【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语句比较好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: