修改检索到的对象时,应用程序对象正在被修改

本文关键字:对象 修改 应用程序 检索 | 更新日期: 2023-09-27 17:59:50

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

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

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

当我修改obj1时,obj2也被修改了。你们能给我建议解决上述问题的办法吗?

修改检索到的对象时,应用程序对象正在被修改

C#中的对象总是通过引用的,这意味着无论何时访问该对象,它都将是该对象的同一实例。听起来你可能想做的是先克隆它,然后修改克隆。这对于共享内存多线程环境(如上面所述)也很重要。

此外,您可以考虑将正在缓存的对象设置为结构,只要您先取消对其的装箱,该结构将通过值而不是引用传递。通常,您不希望编辑线程共享的对象。