更新一个列表会自动更新另一个列表

时间:2016-06-22 07:19:28

标签: c#

我有一个原始列表和两个临时列表。 基于某些条件,我将原始列表中的数据(在修改某些值之后)添加到这些临时列表中。但是,通过此复制操作在一个临时列表中进行的更改也会更新另一个临时列表。

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);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

使用Setter

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

public List<Package> temp1
{
    set { temp1 = value; 
          update your temp2}
    get { return temp1; }
}

答案 1 :(得分:0)

列表中的数据发生变化的原因是由于引用/值类型为mishmash。您的列表仅包含对该列表中对象的引用。因此,每当您更改从其中一个列表中提取的对象时,我怀疑它与另外两个列表中的对象相同,因此这些更改似乎会在列表中传播。