【问题标题】:How to declare Independence variable?如何声明自变量?
【发布时间】:2017-01-27 17:28:58
【问题描述】:

我想解释一下我的摘要代码流程。

我有Session["MainRule"],我调用了一个方法来从中获取所选项目 =>

var temprule=get_temp_rule_byid(Session["MainRule"],id);

我把这个temprule 放到Session["temprule"]

因为当我更新Session["temprule"]时,我不想更新主会话Session["MainRule"]

但是当我在Session["temprule"]. 中进行更新时,为什么Session["MainRule"] 的值会自动改变?

更新

var temprule= RulesRepository.get_temp_rule_byid(Session["MainRule"], id);


public static RuleViewModel get_temp_rule_byid(object rulesFromSession, string id)
        {
            RuleViewModel ruleViewModel = null;
            var temp = rulesFromSession as Dictionary<string, RuleViewModel>;
            if (temp?.TryGetValue(id, out ruleViewModel) == true)
            {
                return ruleViewModel;
            }

            return null;
        }

【问题讨论】:

  • 显示get_temp_rule_byid的代码。
  • 如果不同的会话变量发生变化,那是因为您的代码发生了变化。发布您的代码。
  • 我怀疑如果您将Session 替换为任何其他字典并尝试进行单元测试,您会看到相同的行为。
  • 什么是temprule?如果这是一个类的实例,并且您将 相同的实例 存储在 Session["MainRule"]Session["temprule"]...那么 已更改的实例。似乎您想在Session["temprule"] 中存储规则的副本
  • @RenéVogt temprule 是一个临时会话。

标签: c# asp.net


【解决方案1】:

看起来您会话中的值是引用类型。 Session object changes when object is updated in C#

如果您不想更改值,请在将其放入会话之前克隆该值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多