SqlDataReader dr =null; dr实例化了没有?

解决方案 »

  1.   

    靠,都初始化为null了,还问有没有实例化!!!
      

  2.   

    C#中的对象变量名实际上相当于C++指针。所谓赋值操作都是传递引用。而不是对象的拷贝(String除外)。当你声明一个变量并赋值,并没有产生任何实例化操作。不管赋的是什么值。是否实例化主要看=号右边有没有new
      

  3.   

    SqlDataReader   dr ;
    这里只是声明了一个SqlDataReader的引用(即dr)
    SqlDataReader   dr = null;
    是声明一个SqlDataReader的引用dr后立刻初始化为null
    但是初始化为null 相当于没有实例化
    5楼的观点不全面
    很多情况的实例化不是new出来的
    例如SqlDataReader的实例化是不需要new的
    new是一种为引用的实例申请内存空间的方式(并根据new 后面的类名产生相应的实例),但不是唯一的
      

  4.   

    没错,有很多方法可以直接返回一个new好的对象。但是其内部不也要调用构造函数吗?我指的是初学者最容易识别的情况。
    即使是你说的sqldatareader,在它内部的实现机制中也难保不new了一次。
      

  5.   

    得到SqlDataReader对象于实例化其它ADO.NET对象稍微有些不同。你必须对一个command对象调用ExecuteReaer方法
      

  6.   

    追问一下,SqlDataReader dr = null;与SqlDataReader dr; 有什么区别?
    谢谢!