用法一:
DataSet ds = new DataSet()
for(...)
{
 ds = getdataset();
}
用法二:
for(...)
{
 DataSet ds = new DataSet()
}
不仅仅是DataSet,还有其它很多的对象,应该如何声明使得占用资源最少

解决方案 »

  1.   

    这样当然是要在for 以外实例化了。
      

  2.   

    但是有些则需要在循环内实例化。比如ListViewItem、TreeViewItem.....
      

  3.   

    不至只是效率的问题,错误的对象实例化会导止你得不到想要的结果!
    比如:
    DataSet ds = new DataSet("TestDS");
    ds.Tables.Add(new DataTable("TestTable"));
    for (int i==0;i<=2,i++)
    {
    MessageBox.Show(ds.Tables(0).TableName);//正确!
    ds = new DataSet("TestDS");//再次实例化
    MessageBox.Show(ds.Tables(0).TableName);//将出错,因为新的实例化对象ds并不存在数据表TestTable !}
      

  4.   

    我觉得大家说的都有道理,但还有更优化的做法,那就是用逗号表达式。这样既避免了全局变量(虽然c#中没有全局变量,但是垃圾回收还是有区别的)的缺点,也不用在循环体内反复构建对象:for(int i=0,ds=new DataSet("tempDs");i<count;++i)
    {
    //...
    }不过反复构建ds是否有必要?事实上一个ds中可以有很多DataTable,对这些表可以用关系联系起来。如果反复构建新的ds是为了用DataTable来初始化,那说明没有真正发挥ds的作用。
      

  5.   

    for(int i=0,ds=new DataSet("tempDs");i<count;++i)
    {
    //...
    }明显的语法错误。如果不喜欢全局变量,大可以用{}来划分语句快。