任何人都可以帮助我解决会议所面临的问题。
int a=5;
HttpContext.Current.Session["Session_Variable"] = a;
a = 0;
这就是我面临的确切问题。首先,我们将值“a”分配给包含值为 5 的会话。之后,我将“a”设为 0。在这种情况下,存储在会话中的值也会影响为 0。
我尝试了哪个Iproc
会话以及OutProc(SqlServer session)
,仍然存在问题。
提前致谢
您在评论中显示的代码与问题中的代码完全不同。
问题中的代码使用值类型,因此将变量中的值分配给会话变量将复制该值。为变量分配另一个值不会影响复制到会话变量的值。
注释中的代码使用引用类型,因此将变量中的值分配给会话变量将复制引用。这意味着变量和会话变量都指向对象的同一个实例。此外,注释中的代码更改了对象的成员,它没有为变量分配新值。
当您更改变量指向的对象的成员时,它会更改会话变量指向的对象,因为它是同一个对象。它不是看起来相同的对象的另一个副本,它实际上是同一个对象。
如果要将对象放入会话变量中,然后能够在不影响会话变量指向的对象的情况下更改对象,则需要克隆对象并将副本放入会话变量中。如果对象支持克隆,您可以使用该Clone
方法,否则您需要创建另一个与原始对象具有相同值的对象实例。