问个问题...
 public string AddClass( DataSet ds)
{
....
} public string AddClass( string str)
{
....
}这2个方法有快慢,内存大小的区别吗?我看例子DataSet 中的数据只用到ds.rows[0][0]...那么直接传1条,用string传不好些吗?为什么要传个DataSet?
貌似传DataSet 不会影响效率或者内存空间...引用类型来的...

解决方案 »

  1.   

    只有一个值的话就用string好
    DataSet 比较占资源不知道你的案例是在那里看到的
      

  2.   

    貌似DataSet不占用多少资源吧....DataSet在表示层就开辟了的...知识传到业务逻辑层处理过后传到数据访问层罢了想想DataSet传递的是指针吧...又不新开辟个DataSet...不占用什么内存吧
      

  3.   

    而用string的话要另外开辟个空间了吧....反而不好  好像....
      

  4.   

    public string AddClass( DataSet ds) 

    .... 
    } public string AddClass( string str) 

    .... 
    } 第一个方法需要在内存控件复制一个新的 ds,ds的大则开销大第一个方法改为
    public string AddClass(ref DataSet ds) 

    .... 

    不复制ds,直接使用你传给函数的参数。
    (类似与C语言中的指针参数)
      

  5.   


    DataSet dsOut = new DataSet();
    AddClass(dsOut ) public string AddClass( DataSet ds) 

        ds.dispose(); 
    }dsOut 还存在吗?
      

  6.   

    还存在啊...
    ds.dispose()后...
    我再打印对象 仍然存在啊....dataset本身就是引用类型...加ref和不加一样的
      

  7.   

    不一样...传递的都是一个引用的副本,但是加ref将保留方法中对引用的对象的更改,不加ref退出方法体时放弃该副本...也就是说当你传递一个DataSet对象给方法AddClass时,在AddClass方法体内将创建一个新的DataSet对象...
      

  8.   

    还有一点...这个引用的副本仅仅是DataSet对象的引用的副本,该DataSet对象的引用成员仍然是相同的引用...所以不加ref可以更改该DataSet对象的引用成员...
      

  9.   

    既然还存在,那么加ref和不加ref就是不一样的
      

  10.   

    如此说传递dataset也无所谓...因为是指针...存储的是指针比传递字符串还节省了内存空间
    而且dataset传递过去也方便...以便扩展...对数据加工什么的
      

  11.   

    不止是指针...都说了将在AddClass方法体内创建一个新的DataSet对象,此对象是传递的参数的副本...