缓存被修改而不是局部变量(通过ref传递)

ama*_*eur 2 c# asp.net caching byref byval

我正在写一个.net c#应用程序.

我从xml文件中检索一些数据,将数据缓存到.net缓存并从我的方法返回.我对数据执行一些处理并将其返回给我的应用程序的另一部分.

下一次调用,我从缓存中读取,处理它并返回它等.

我遇到的问题是对缓存数据执行的处理似乎修改了缓存而不是本地变量,这意味着下次我从缓存中读取时,它返回的是先前处理的处理数据.

所以从缓存返回的数据似乎是由ref而不是value返回的.

知道如何防止缓存被修改?

JNa*_*ppi 5

内存缓存将存储指向该对象的指针.它就像一个全局变量.缓存项的任何其他变量赋值都将引用同一对象.对于进程外或分布式缓存,这是不同的.对于这些类型的缓存,必须从缓存中序列化和反序列化该对象.在这些情况下,您将获得副本.

如果要模拟进程外的行为,可以复制/克隆对象或序列化/反序列化缓存中的对象.