DataTable tb = (DataTable)Session["t_Table"];对表tb操作再次读(DataTable)Session["t_Table"]的时候,为什么里面的值也更着变了?我用字符串测试了下,好像不会变!但是datatable会变。session

解决方案 »

  1.   

    对于string或者datatable,Session中存储的都是引用
    只不过.net中的字符串有不可变性,
    string abc = "abc";
    session["abc"]=abc; 
    abc="123" 当你这样修改字符串后,其实是将abc的重新引用至"123"了
    而session则仍然引用的是原来的 "abc"
    了解一下堆栈模型就很好理解了
      

  2.   

    Session["t_Table"]存储的始终是原来的那个dt,你对dt插行,删行,修改,都不会修改Session["t_Table"]对dt的引用
      

  3.   

    那怎么样才能记录之前的Session中的datatabe值呢??
      

  4.   

    =============但是我在赋值的时候为什么work呢?
    Session["xx"] = dt;
    dt=null;
    这样后Session["xx"]中的值不是null
      

  5.   

    知道了。
    这样就行了
    DataTable tb = (DataTable)Session["t_Table"].copy();