日期:2014-05-16  浏览次数:20535 次

asp.net HttpRuntime.Cache里的值为什么会被更新。
我先往cache里insert了一条数据

HttpRuntime.Cache.Insert(key, value, Nothing, DateTime.Now.Add(span), Cache.NoSlidingExpiration)


key=1 
value是一个datatable

我取出来这个datatable

Dim DT as DataTable =HttpRuntime.Cache.Get(1)


然后我对这个datatable加以列

DT.Columns.Add("Col1")


**奇怪的是 缓存里的datatable居然也加了一列,我再次监视了下HttpRuntime.Cache.Get(1),得到的datatbale居然也加上了“Col1”这一列


我就一头的问号了??????????????????WHY???????
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

是引用类型。



可以详细点么?

是引用类型,你得到的实际上是对这个对象的引用..也就是 在内存里 是一个对象.





谢谢,我了解原因了
但是怎么解决呢,有没有什么好办法
datatable存到了cache里,我取出来又需要对他进行修改。



首先   不建议使用datagtable,因为这个类型对外界的是未知,的,如果不调试,你不知道这个table里是放的什么数据

你可以自定一个对象,是这个对象实现ICloneable接口,,然后table转换成这个对象的集合.


------解决方案--------------------
把DataTable复制一份出来再处理