日期:2014-05-18  浏览次数:20795 次

看不懂下面的代码,请指教?
看到一段代码,好象是处理数据库连接及其它工作的类:
public   class   Database   :   IDisposable   {
//   连接数据源
private   SqlConnection   con;

///   <summary>
///   执行存储过程
///   </summary>
///   <param   name= "procName "> 存储过程的名称 </param>
///   <returns> 返回存储过程返回值 </returns>
public   int   RunProc(string   procName)   {
SqlCommand   cmd   =   CreateCommand(procName,   null);
cmd.ExecuteNonQuery();
this.Close();
return   (int)cmd.Parameters[ "ReturnValue "].Value;
}

不清楚   :   IDisposable   这个是个什么东东?

------解决方案--------------------
继承IDisposable这个接口,至于这是啥。。。msdn查一下
------解决方案--------------------
IDisposable 接口
定义一种释放分配的非托管资源的方法。

代码是否没有贴全呢?在继承了该接口后 应该显示的实现dispose方法才对嘛
------解决方案--------------------
IDisposable 接口
定义一种释放分配的非托管资源的方法。
------解决方案--------------------
继承了一个.netfreamwork内置的接口而已

和继承自己定义的接口 没什么区别

继承IDisposable 就是用来及时释放资源的 而不必等到GC自动回收才释放资源
------解决方案--------------------
接口
------解决方案--------------------
这下代码帖全了,帖了整个屏幕了
------解决方案--------------------
实现这个接口是为了给使用者一个能手动释放对象的机会
例如
object a = ...
//你如何在下一句释放它
a = null ?? //不能确定,只能等待gc来收拾
如果 a 实现了idisposeable
则可
a.dispose();//即可尤其是a 里如果包括一个非托管资源,比如数据库联接,文件句柄等不受框架管理的东东时,尤其重要
还有实现了这个接口,你可以用
using( youclass a = new yourclass )
{
}//到这里a 已经自动释放


------解决方案--------------------
建议楼主一同看下关于接口的资料。我也不是很理解,只能是遇到的时候再去查,不过我知道那是个接口,呵呵