这样的一种使用场景: dt是一个DataTable,有一些数据,存入Session中了。
1.
  ((DataTable)Session["dt"]).Clear();
  上面这句能清除Session里面存放的dt里面的内容吗?为什么?
2.
  A.
  for(int i=0;i<100;i++)
  {
    .....得到dr是一个DataRow 
    ((DataTable)Session["dt"]).Rows.Remove(dr);
  }
  B.
  DataTable dt = ((DataTable)Session["dt"]);
  for(int i=0;i<100;i++)
  {
    .....得到dr是一个DataRow 
    dt.Rows.Remove(dr);
  }
  Session["dt"] = dt;
  从效率上来说是A效率高还是B的效率高?

解决方案 »

  1.   

    1.不可以,因为是先进行类型转化为DataTable后才Clear的
    2.用屁股想都知道是B,类型转化一次当然比转化一百次快
      

  2.   

    1.不可以,因为是先进行类型转化为DataTable后才Clear的
    2.用屁股想都知道是B,类型转化一次当然比转化一百次快
      

  3.   

    1、((DataTable)Session["dt"]).Clear(); 
      上面这句能清除Session里面存放的dt里面的内容。表将变成空表,Session["dt"]仍存在
    2、B的效率高一些
      

  4.   

    1.楼主为什么不用Session.Remove("dt")了。
    2.肯定是B好了。