我在应用程序缓存中保留一个全局对象,根据我的需要检索和修改它。奇怪的是,一旦我修改了检索到的对象,应用程序对象也会被修改。我不希望修改应用程序对象。
System.Web.HttpContext.Current.Application["obj2"]=obj2;
喜欢
object obj1 = System.Web.HttpContext.Current.Application["obj2"];
当我修改obj1时,obj2也被修改了。你们能告诉我上述问题的解决方案吗?
答案 0 :(得分:2)
C#中的对象始终是按引用,这意味着无论何时访问此对象,它始终与对象的实例相同。听起来你可能想做的就是首先克隆它然后修改克隆。这对于像上面那样的共享内存多线程环境也很重要。
此外,您可以考虑使用缓存结构的对象,只要先将其取消,然后按值而不是按引用传递。通常,您不希望编辑线程共享的对象。