如题。

解决方案 »

  1.   

    DataSet ds;  建立一个DataSet型的引用 
    new DataSet(); 在托管堆中生成一个DataSet的实例
    DataSet ds = new DataSet(); 建立一个DataSet型的引用,然后在堆中生成一个实例,然后让这个引用指向那个实例。
      

  2.   

    DataSet ds;中的ds是否对应有具体的一个实例,与C++有何不同?
      

  3.   

    c#和c++当然不同了;
    c++中:
      A a; //在栈上为a分配空间,并调用a的构造函数
      new A(); // 在堆上为a分配空间,并调用a的构造函数
    c#中:
      A a; //只是声明一个引用,并不为a分配空间
      new A(); //在堆上为a分配空间,并调用a的构造函数;在c#中除了普通数据类型,都是在堆上
               //建立对象,然后使用GC回收
      

  4.   

    当然有区别了  DataSet ds;只是申明了一个句柄,而并没有开辟内存空间。
                  
     DataSet ds = new DataSet();因为使用了new语句,所以已经在托管堆上开辟了一个内存空间。
      

  5.   

    如何在C#中像C++那样声明一个对象并且立即实例化,
    就是譬如说A a; 这样, 但要求这个a不是引用而是一个具体的对象实例。或者说C#里面能不能这样在栈上定义出一个对象实例来根据书本所述,C#中有一个什么装包、卸包的过程,那么这个new出来的实例如何才能把它复制出来作为另一个实例使用呢。
    就是比如Table tbl = ds.Tables[0];
    那么这个tbl是引用DataSet中的Table对象还是有了自己的一个实例?如果想把DataSet中的table复制出来,如何处理;若仅仅是引用DataSet中的table又如何处理呢?
      

  6.   

    C#中的数据类型分为两种
    1.值类型    变量的地址便是数据存储的位置(int char ...)
    2.引用类型   变量的里存的是相应对象的内存块地址(类的实例)
      

  7.   

    如果你不new一下,最直接的反应就是,报你空指针异常~~
    再说了,这是面向对象的很重要的一个东西~~
      

  8.   

    Dataset ds;
    只是声明,在内存中不为它分配空间;
    Dataset ds=new Dataset();
    实例化,在内存中分配空间给它;
      

  9.   


     
    Dataset ds=new Dataset();=============================
    Dataset ds;ds=new Dataset;