C#using 用法
2015-10-14 20:58
453 查看
代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来using指令调用了一个方法——Dispose()方法。而Dispose()方法的作用就是释放所有的使用资源。
例:
这个例子中的两个可处理对象没有被恰当的释放:SqlConnection和SqlCommand。两个对象同时保存在内存里直到析构函数被调用。
解决这个问题的方法就是在使用完命令和链接后就调用它们的Dispose:
使用using语句也可以很好的实现此功能,而且代码很清晰:
当你在一个函数内使用一个可处理对象时,using语句是最简单的方法来保证这个对象被恰当的处理掉。当这些对象被分配时,会被编译器放到一个try/finally块中。
例:
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( ); }
相关文章推荐
- C#反射机制
- C#学习日记24----事件(event)
- C#文件操作
- C#访问gsoap的服务
- C#实现对站点、程序池状态的监控,以及URL能正常返回的监控,状态异常,邮件预警
- C# Directory FileStream StreamWriter
- c#中文字大全,转换为字符串格式
- C#的WINFOR录窗体中生成验证码
- C#排序算法小结
- C#中子类调用父类的实现方法
- C#中Equals方法的常见误解
- C#: 一个方法执行超时 timeout 检查的实现
- c#语音识别与合成
- C# 给枚举定义DescriptionAttribute,把枚举转换为键值对
- C#编程自学之流程控制语句
- C# 实现文件下载的几种方式
- BC#59 The Highest Mark
- C# 文件压缩与解压(ZIP格式)
- C# 反射 通过类名创建类实例
- windbg查找c#高内存原因