在C#中更新对象时会话对象发生更改

前端之家收集整理的这篇文章主要介绍了在C#中更新对象时会话对象发生更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个非常奇怪的问题,我确信我在这里遗漏了一些明显的东西.我有这两行:
HttpContext.Current.Session[listModelType + "ListModel"] = listModel;
listModel.ProductRows = new Collection<ProductRow>(listModel.ProductRows.Where(r => r.ParentRowId == 0).ToList());

执行第二行后,我的会话对象也会更新(根据Visual Studio中的“Watch”)

我在这里错过了什么?

我试过了

int i = 0;
HttpContext.Current.Session["i"] = i;
i++;

和HttpContext.Current.Session [“i”]保持为0.

解决方法

value types and reference types.

int是一个值类型,因此将在赋值时“按原样”存储; listModel是一个引用类型,因此您在会话中存储对象的引用,而不是对象的值.

如果您希望会话中的那个实例不受影响,则必须创建listModel的新实例.

猜你在找的C#相关文章