修改检索到的对象时,将修改应用程序对象

时间:2011-06-20 21:54:45

标签: c# .net asp.net caching

我在应用程序缓存中保留一个全局对象,根据我的需要检索和修改它。奇怪的是,一旦我修改了检索到的对象,应用程序对象也会被修改。我不希望修改应用程序对象。

System.Web.HttpContext.Current.Application["obj2"]=obj2;

喜欢

object obj1 = System.Web.HttpContext.Current.Application["obj2"];

当我修改obj1时,obj2也被修改了。你们能告诉我上述问题的解决方案吗?

1 个答案:

答案 0 :(得分:2)

C#中的对象始终是按引用,这意味着无论何时访问此对象,它始终与对象的实例相同。听起来你可能想做的就是首先克隆它然后修改克隆。这对于像上面那样的共享内存多线程环境也很重要。

此外,您可以考虑使用缓存结构的对象,只要先将其取消,然后按值而不是按引用传递。通常,您不希望编辑线程共享的对象。