为什么一个列表中的更改会影响其他列表?

时间:2016-02-25 05:26:50

标签: c# list c#-4.0 ienumerable

我有两个List集合。

List<list<int>> FS = new List<List<int>>();List<List<int> V= new List<List<int>>()

我在FS

添加了一些valuse

现在我的FS看起来像

FS={{1},{2},{3}}

然后我将FS的价值分配给V V = FS 现在我想通过每一对

//Performing some Logic 
for (int i = 0; i < FS.Count-1; i++)
        {
            for (int k = i + 1; k < FS.Count; k++)
            {
                List<int> temp = new List<int>();
                temp.AddRange(FS[i]);
                temp.AddRange(FS[k]);
                VF.Add(IP_CFFM(temp));
                V.Add(temp);
                if (IP_CFFM(temp) > IP_CFFM(FS[i]) && IP_CFFM(temp) > IP_CFFM(FS[k]))
                {
                   FS[i].AddRange(FS[k]);
                   FS.Remove(FS[k]);

                }
            }
        }

在执行if(condition)之前V看起来像V = {{1},{2},{3},{1,2}} 但是在执行第FS[i].AddRange(FS[k]);行之后,列表V已更改,它看起来像{{1,2},{2},{3},{1,2}} if(condition),我在V上没有操纵或没有执行任何操作。那为什么会发生呢?

1 个答案:

答案 0 :(得分:1)

List<T>是一个类,所以它是参考。

V = FS实际上意味着指向相同的位置/地址空间。

这意味着您对它所做的任何事情都将反映在另一个中。只有List

的两个 不同的 名称