2016-06-22 6 views
-1

私は1つのオリジナルリストと2つの一時リストを持っています。 特定の条件に基づいて、元のリスト(特定の値を変更した後)からこれらの一時リストにデータを追加します。しかし、このコピー操作によって1つの一時リストに加えられた変更は、他の一時リストも更新しています。1つのリストを更新すると自動的に別のリストが更新されます

List<UserLMSSubFunc> lstUserLMSSubFunc = null; 
List<UserLMSSubFunc> lstUserLMSSubFuncTemp1 = new List<UserLMSSubFunc>(); 
List<UserLMSSubFunc> lstUserLMSSubFuncTemp2 = new List<UserLMSSubFunc>(); 

foreach (Constructor subFnc in originalList) 
{ 
    foreach (KeyValuePair<string, string> kv in OriginalList) 
    { 
     if (kv.Value.ToUpper() == subFnc.SubFuncCode.ToUpper()) 
     { 
      if (subFnc.FuncCode == null) 
      { 
       subFnc.FuncCode = kv.Key; 
       templist1.Add(subFnc); 
      } 
      else 
      { 
       subFnc.FuncCode = kv.Key; 
       Templist2.Add(subFnc); 
      } 
     } 
    } 
} 
+0

これらのリストを定義するコードを表示します。 –

+0

@MartinHeralecký更新 –

答えて

0

あなたのリスト内のデータが変更された理由は、参照/値型の寄せ集めによるものです。あなたのリストは、そのリスト内のオブジェクトへの参照のみを保持します。したがって、あなたがリストの1つから引っ張ったオブジェクトを変更するたびに、他の2つのオブジェクトにも同じオブジェクトが存在すると思われます。そのため、リスト全体に見かけ上変化します。

0

使用セッター

private var temp1 = new List<Package>();  

public List<Package> temp1 
{ 
    set { temp1 = value; 
      update your temp2} 
    get { return temp1; } 
} 
関連する問題