为什么一个列表中的更改会影响另一个列表
本文关键字:列表 影响 另一个 一个 为什么 | 更新日期: 2023-09-27 18:36:10
我有两个列表集合。
List<list<int>> FS = new List<List<int>>();List<List<int> V= new List<List<int>>()
我为FS
添加了一些价值
现在我的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
执行任何操作。那为什么会这样呢?
List<T>
是一个类,所以它是引用。
V = FS
实际上意味着两者都指向相同的位置/地址空间。
这意味着你对它所做的任何事情都会反映在另一个中。只是你的List
有两个不同的名字