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