看了一些代码,当DataSet重复赋值时会调用Clear()方法。有这个必要吗?直接赋值不是一样吗?

解决方案 »

  1.   

    如果是用Fill方法就得清一下了,不然数据就混乱了。
      

  2.   

    呵呵,这个问题大的理论不是很了解
    我想,既然有clear()这个方法就有他的用处
    如果按你说的那样,可能在运行过程中也不会出什么错,但是不排除会出错
    或许不会报错,但是数据可能为有错。
    呵呵,个人理解
      

  3.   

    是这样的,Clear()是清除DataSet中已经有的数据。
    比如说你用select * from table1
    select * from table2
    两个SQL语句来填充DataSet中去,那么DataSet中就会有两个表中的内容了。
    但是如果你在用table2中的数据填入DataSet中的时候你不用Clear()方法,那第二个表的内容就会添加在第一张表后面了。反过来,如果你调用了Clear()方法后再添入第二张表的数据,那么DataSet中就只会有第二张表的内容了。
    这样你应该明白了吧。
      

  4.   

    DataSet ds=new DataSet();
    ds=GetDataSet(argu1);//GetDataSet是自定义的,返回一个DataSet
    .
    .//一些处理
    .
    //现在需要对ds重新赋值
    ds=GetDataSet(argu2);
    这样ds也需要Clear吗?
      

  5.   

    必须要Clear()。因为Dataset里可以储存N多Table,Table当然是存数据了,当Dataset 再次Fill时他不会把原来里面已有的数据清除。例如:Dataset现已储存Tabel1的数据,现在你要把Table2的数据储存到Dataset里,只要再你 Clear()之前Table1的数据会一直存在里面。
      

  6.   

    缓存问题使用clear()是确保你取出来的数据是你想要的。
      

  7.   

    Dataset里可以储存多个Table,不清除会一直占用缓存
    建议清除
      

  8.   

    我觉得像这样:ds=GetDataSet(argu2);直接给DataSet赋值,而不是在原来的ds上再添加数据,
    如此相当于创建了一个新的DataSet对象,ds这个引用指向了这个新对象,
    那么原来的对象应该有垃圾回收机制回收就可以了。不知道是不是这个道理,待高手指点。