Объект приложения модифицируется при изменении извлеченного объекта - PullRequest
0 голосов
/ 21 июня 2011

Я храню глобальный объект в кэше приложения, извлекаю и изменяю его в соответствии с моими потребностями.Странная вещь - когда я изменяю извлеченный объект, объект приложения тоже изменяется.Я не хочу, чтобы объект приложения был изменен.

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

как

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

, когда я изменяю obj1, obj2 тоже модифицируется.Ребята, можете ли вы предложить мне решение вышеуказанной проблемы?

1 Ответ

2 голосов
/ 21 июня 2011

Объекты в C # всегда являются косвенными, что означает, что всякий раз, когда вы обращаетесь к этому объекту, он всегда будет одним и тем же экземпляром объекта.Похоже, что вы, возможно, захотите сделать, это сначала клонировать его, а затем изменить клон.Это также важно для многопоточных сред с общей памятью, таких как у вас выше.

Кроме того, вы можете рассмотреть возможность создания объекта, который вы кэшируете структуру, которая передается по значению вместо ссылки,пока вы сначала распакуете его.Как правило, вы не хотите редактировать объекты, общие для потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...