读书人

Session的值为何变了

发布时间: 2013-07-09 09:50:48 作者: rapoo

Session的值为什么变了?
DataTable tb = (DataTable)Session["t_Table"];

对表tb操作。。。

再次读(DataTable)Session["t_Table"]的时候,为什么里面的值也更着变了?

我用字符串测试了下,好像不会变!但是datatable会变。 session
[解决办法]

引用:
DataTable tb = (DataTable)Session["t_Table"];

对表tb操作。。。

再次读(DataTable)Session["t_Table"]的时候,为什么里面的值也更着变了?

我用字符串测试了下,好像不会变!但是datatable会变。


一个是对象一个是基本类型,对象里面的值变了,其他地方引用的这个对象也会变,基本类型就不会。
[解决办法]
对于string或者datatable,Session中存储的都是引用
只不过.net中的字符串有不可变性,
string abc = "abc";
session["abc"]=abc;
abc="123" 当你这样修改字符串后,其实是将abc的重新引用至"123"了
而session则仍然引用的是原来的 "abc"
了解一下堆栈模型就很好理解了
[解决办法]
Session["t_Table"]存储的始终是原来的那个dt,你对dt插行,删行,修改,都不会修改Session["t_Table"]对dt的引用

读书人网 >C#

热点推荐