简单问题:
使用
using(SqlDataReader reader = new SqlDataReader)
{
    ..............
    reader.Open();
}
这种方式声明reader,在using体中只打开不关闭,问:在using体执行完之后会不会将reader先关闭再释放?

解决方案 »

  1.   

    会将reader对象不Close()而直接删除掉,也就是直接Dispose()掉了.
      

  2.   

    SqlDataReader reader = new SqlDataReader
    这一句是不对的,SqlDataReader的构造函数是私有的,不能使用new SqlDataReader来创建实例。
      

  3.   

    晕,那不是很危险,经常从数据层传回来一个SqlDataReader要用,不能在数据层里关闭数据库连接,而要在外面用完后手动关闭,so 麻烦
      

  4.   

    对对对,这是不对的,只是举个例子,实际上是调用一个方法来返回一个SqlDataReader,相信大家都能看的出来,嘿嘿!大家知道意思就可以了
      

  5.   

    using只会负责调用Dispose方法,但你不用担心,因为SqlDataReader.Dispose方法会把自己给Close掉。
      

  6.   

    有人说不close,有人说会close,到底怎么样有没有办法测试呢?
      

  7.   

    SqlDataReader:private void Dispose(bool disposing)
    {
          if (disposing)
          {
                try
                {
                      this.Close();
                }
                catch (Exception exception1)
                {
                      ADP.TraceException(exception1);
                }
          }
    }
     还有问题没?
      

  8.   

    .net会在需要删除的时候进行处理,比如,内存占用过大或其它,见意还是手动关闭
      

  9.   

    DataReader可以等到需要删除的时候让.NET自动处理。数据库连接可等不起
      

  10.   

    真的有这样的asp服务器!!!
    asp和asp.net服务器 50mb 25元/年
    我看到了一个网站 50MB asp和 asp.net空间 现在促销,
    同学们可以做一个简单的个人网站用来找工作 ,
     支持 asp.net 一年才25元!不要错过哦!!!
    速度非常快,一般公司企业 足够用了!
    http://www.hi876.com 他们的IP 是 211.144.143.13 国务院-国研机房的!
    希望能对大家有帮助
      

  11.   

    关于Reflector:http://www.google.com/search?hl=zh-CN&inlang=zh-CN&newwindow=1&q=Reflector+%E4%B8%8B%E8%BD%BD&lr=lang_zh-CN
    官方网址:http://www.aisto.com/roeder/dotnet
    微软的帮助都是这样的,一些重要的东西都没写,很多时候自己反射源码来看更方便。不关是SqlDataReader,还有SqlConnection的Dispose方法也会把自己关闭:
    protected override void Dispose(bool disposing)
    {
          if (disposing)
          {
                switch (this._objectState)
                {
                      case ConnectionState.Open:
                      {
                            this.Close();
                            break;
                      }
                }
                this._constr = null;
          }
          base.Dispose(disposing);
    }
     
    其他的xxxxDataReader、xxxxConnection也都是。数据库连接用完即时关闭是非常重要的。