public void Dispose()
{
     if(strConnection!=null)
         {
              strConnection.Dispose();
              strConnection=null;
         }
}strConection 是变量,用来标识数据库的连接状态
此方法是释放数据库占用的资源Dispose方法是新建的方法,紧接着在起内部就进行了调用,不是形成了递归了吗?那他下面的strConnection=null就没有了意义了,也达不到释放数据库占用资源的目的啊!《菜鸟个人理解,求高人解答!》

解决方案 »

  1.   

    Dispose()和strConnection.Dispose()是不一样的。呵呵strConnection.Dispose() 是把连接给释放了 然后把它赋为null外部的Dispose()里面是实现上述的功能。
      

  2.   

    你可以把外部的方法Dispose() 改成Dispose123()这样比较好理解了吧?
      

  3.   

    如果 strConnection 是一个字符串的话,那么对它释放实际上毫无意义。
      

  4.   

    此dispose非彼dispose。
    就像两个类中有相同签名的方法一样。
      

  5.   

    trConnection=null是为了将trConnection指针置空。
    这样写很安全。就好象C语言中的 free(p); p=null;一样
    free 只是堆中数据,但是指针还在栈中,且指向一个非法的位置.
      

  6.   

    free 只是销毁堆中数据,但是指针还在栈中,且指向一个非法的位置.
      

  7.   

    public void Dispose()
    {
      if(strConnection!=null)
      {
      strConnection.Dispose();
      strConnection=null;
      }
    }没看到整个类的定义,猜测 strConnection 实际是 Connection 的实例。
    看你这个定义会让人误解成字符串的!
    Dispose()是释放内部资源,但是对当前的类对它仍然有引用。
    只有当一个对象没有任何引用了。GC才会对它回收。
    当前的类先释放自己对Connection的引用。Connection也会释放Connection自己的资源。
    从上到下,从外到内,这样是合理的。
      

  8.   

    你看看是不是全局有个strConnection的声明。如果有,那么他的意思就是。释放完毕,重新建立一个。
      

  9.   

    简单点讲
    Dispose()  调用自定义的Dispose方法 
    public void Dispose()
    {
        //不要纠结与方法名
    }
    strConnection.Dispose()  是立即释放strConnection,将其置为NULL