0

任何人都可以帮助我解决会议所面临的问题。

int a=5;

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

 a = 0;

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

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

提前致谢

4

1 回答 1

1

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

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

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

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

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

于 2013-08-01T17:35:24.993 回答