Удаление общего кэшированного списка в памяти без эффекта. - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь удалить один элемент из своего списка. НО, я получаю список из кэша. После этого я удаляю один элемент в моей функции. Это удаляет эффект моего кэшированного списка. Если я пытаюсь снова получить кэшированный список из кэша на другой странице. Удаленный элемент отсутствует, как это возможно?

пример,

var IList list;
 if(condition)

 list=CacheManagement.GetFromCache();
 else
 list=SqlManagement.GetFromSql();


 list.removeall(x=>x.id==1);
 //end of my function

1 Ответ

0 голосов
/ 11 ноября 2018

Таким образом, когда вы вносите изменение в список, оно отражается в кеше, потому что ссылка (адрес памяти списка) копируется в кеш, поэтому любые изменения будут фактически отражаться в кеше.

Чтобы избежать этого, просто поместите Clone() вашего списка в кеш. (при условии, что UpdateCache() является методом, который устанавливает кэш), вы можете сделать это так:

UpdateCache(list.Clone());
...