如何在会话中创建对象的副本以更新而不更新会话?

时间:2010-07-20 14:49:16

标签: asp.net

我对如何在会话中引用对象,如何更新和复制感到困惑。

如果我创造     MyObject obj = new Object();
然后     Session [“object”] = obj;

MyObject temp = (MyObject)Session["object"];

如果我在临时更改某些内容,会话中的对象是否会更新?

我是否需要按照Session [“object”] = temp进行更改 ?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果MyObject是引用类型(类)并且它是可变的(即它具有改变其状态的方法),那么您不需要每次都使用它重新分配Session。

如果MyObject是值类型(struct),如果它是一个不可变类(如String),则每次更改它时都必须将它重新分配给Session。

答案 1 :(得分:0)

您无需将temp变量存储回会话。由于Session["object"]temp变量都指向同一个对象,因此在temp中修改它也会在Session中对其进行修改。