2017-01-27 18 views
0

私は私の要約コードの流れを説明したいです。独立変数の宣言方法は?

私はSession["MainRule"]を持っていると私はSession["temprule"]にこのtempruleを置くこの=>

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

から選択した項目を取得するメソッドを呼び出します。

私は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; 
     } 
+0

'get_temp_rule_byid'のコードを表示します。 – HimBromBeere

+0

異なるセッション変数が変更された場合は、コードがそれを行ったためです。あなたのコードを投稿してください。 –

+0

'Session'を他の辞書に置き換えて単体テストを試みると、同じ動作が起こると思います。 –

答えて

2

はあなたのセッションの値のように見えるの更新は、参照型です。 Session object changes when object is updated in C#

値を変更しない場合は、セッションに入れる前に値を複製してください。

+0

、詳細を教えてください。 – Jze

+0

それを説明する別の質問からのリンクを貼り付けました。 http://stackoverflow.com/questions/17484059/session-object-changes-when-object-is-updated-in-c-sharp – Vijay

関連する問題