加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:18:15 所属栏目:百科 来源:网络整理
导读:我有这个非常奇怪的问题,我确信我在这里遗漏了一些明显的东西.我有这两行: HttpContext.Current.Session[listModelType + "ListModel"] = listModel;listModel.ProductRows = new CollectionProductRow(listModel.ProductRows.Where(r = r.ParentRowId == 0
我有这个非常奇怪的问题,我确信我在这里遗漏了一些明显的东西.我有这两行:
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的新实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读