在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的新实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |