gpt4 book ai didi

c# - 在 C# 中更新对象时 session 对象发生变化

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:59 25 4
gpt4 key购买 nike

我遇到了这个非常奇怪的问题,我确定我在这里遗漏了一些明显的东西。我有这两行:

HttpContext.Current.Session[listModelType + "ListModel"] = listModel;
listModel.ProductRows = new Collection<ProductRow>(listModel.ProductRows.Where(r => r.ParentRowId == 0).ToList());

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

我在这里错过了什么?

我试过了

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

并且 HttpContext.Current.Session["i"] 保持为 0。

最佳答案

参见 value types and reference types .

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

如果您希望 session 中的实例不受影响,则必须创建 listModel 的新实例。

关于c# - 在 C# 中更新对象时 session 对象发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38265095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com