2016-06-22 3 views
-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

Причина, почему данные в списках меняется из-за типа мешанина ссылки/значение. В ваших списках содержится только ссылка на объект внутри этого списка. Поэтому всякий раз, когда вы меняете свой объект, который вы вытащили из одного из списков, я подозреваю, что это тот же объект, который находится и в других двух, следовательно, изменение, которое, по-видимому, распространяется по спискам.

0

Использование сеттер

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

public List<Package> temp1 
{ 
    set { temp1 = value; 
      update your temp2} 
    get { return temp1; } 
} 
Смежные вопросы