Asp.net,Session状态问题与以下场景有关

时间:2013-08-01 06:17:19

标签: asp.net mvp

任何人都可以帮助我解决问题,我在会议中遇到这个问题。

int a=5;

 HttpContext.Current.Session["Session_Variable"] = a;

 a = 0;

这是我面临的确切问题。 首先,我们将值'a'分配给包含值为5的会话。 之后我将'a'设为0。 在这种情况下,存储在会话中的值也实现为0。

我尝试了哪个Iproc会话以及OutProc(SqlServer session),仍然存在问题。

先谢谢 Adityap

1 个答案:

答案 0 :(得分:1)

您在评论中显示的代码与问题中的代码完全不同。

问题中的代码使用值类型,因此将变量中的值赋给会话变量将复制该值。为变量分配另一个值不会影响复制到会话变量的值。

注释中的代码使用引用类型,因此将变量中的值赋给会话变量将复制引用。这意味着变量和会话变量都指向对象的同一个实例。此外,注释中的代码更改了对象的成员,它不会为变量赋值。

当您更改变量所指向的对象的成员时,它将更改会话变量指向的对象,因为它是同一个对象。它不是另一个看起来相同的对象副本,它实际上是同一个对象。

如果要将对象放入会话变量中,然后能够在不影响会话变量指向的对象的情况下更改对象,则需要克隆该对象并将该副本放入会话变量中。如果对象支持克隆,则可以使用Clone方法,否则需要创建与原始对象具有相同值的另一个对象实例。

相关问题