今天在单位写代码的时候,由于经常用到一组数据,变量类型为StringBuilder里面,为了提高速度,存储Cahche里面,结果每次变量存储在Cache以后,对变量的操作还会影响到Cache里面的变量的值,取出来以后还是改变的,觉得很奇怪,变量已经存储到Cache里了啊,怎么还是可以改的.
刚才写了句代码,还是这种情况:
















难道Cache存储的只是对象的引用类型,以前还真的没有注意到这个问题,对其它的类型是不是也会这样呢,又写了一个简单的程序了一下,果然如此:







但是以前用于存储的HashTable也是引用类型啊,怎么没有注意过,写下测试代码:
原来真的如此,Cache只是在服务器端存储了对引用类型的引用吗?那么Session和ViewState呢






看来Session和Cache一样,只是适用的范围不一样,Session是为单独的一个用户存储.两个都存储在服务器上的内存上.
测试ViewState的时候,出了问题,提示要将对象People序列化,原来这样!!忘了都...












原来竟然是这个样子,不过如果存储的是对象引用的话,那生命期呢,如果在这个生命期,而且在他存储的有效的范围内的修改都会影响到Cache里获取的结果吗?还是获取的也只是引用而已....明天研究..
不过Cache理论上是应该存储一些不经常改变的经常使用的数据,这样经常改变,似乎有些有违规则了.