【问题标题】:asp.net - C# Session variable being modified by reference?asp.net - C# 会话变量被引用修改?
【发布时间】:2009-08-20 17:38:13
【问题描述】:

当我修改会话中的局部变量集时,我的会话对象中的值似乎发生了变化。

设置:

.net 2.0

BasePage 从 session 中检索一个复杂对象,对其进行转换,并将其存储在一个类级别的变量中。 子页面使用类级别变量来播放一些可选场景。用户决定不保留更改,会话对象不会从变量中更新,但是当您从会话中检索值时,它包含那些未保存的更改。

在调试模式下查看会话对象,它会在本地对象更改的同时发生变化。

谢谢!

【问题讨论】:

    标签: .net session-variables


    【解决方案1】:

    您在会话中返回对对象的引用,因此它应该是这样工作的。如果您想使用不同的对象,您应该在会话中创建对象的克隆以使用,然后如果用户决定接受更改,则用克隆替换存储在会话中的对象。

    【讨论】:

    • 这是否从 .net 1 更改为 2?因此,如果我有以下内容: myObj temp = Session["myStuff"] as myObj; temp.name = "测试"; temp = Session["myStuff"] as myObj;我几乎肯定我过去曾使用它来重置对局部变量的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2012-12-19
    • 1970-01-01
    • 2014-10-25
    相关资源
    最近更新 更多