我有一个列表,该列表在整个程序中不断更新。每次更新后,我希望能够比较列表的初始计数和最终计数。以下只是示例代码(原始代码太长(,但足够捕获了问题。
class Bot
{
public int ID { get; set; }
}
public class Program
{
public void Main()
{
List<Bot> InitialList = new List<Bot>();
List<Bot> FinalList = new List<Bot>();
for (int i = 0; i < 12345; i++)
{
Bot b = new Bot() {ID = i};
InitialList.Add(b);
}
FinalList = InitialList;
for (int i = 0; i < 12345; i++)
{
Bot b = new Bot() {ID = i};
FinalList.Add(b);
}
Console.Write($"Initial list has {InitialList.Count} bots");
Console.Write($"Final list has {FinalList.Count} bots");
}
}
输出:
Initial list has 24690 bots
Final list has 24690 bots
期望这两个列表都有12345个机器人。
复制初始列表的正确方法是什么,因此不简单地添加新集?
要做您似乎想做的事情,您想复制列表,而不是为同一列表分配新的引用。所以而不是
FinalList = InitialList;
使用
FinalList.AddRange(InitialList);
基本上,您所拥有的是两个变量,都指的是同一列表。这样,您有两个不同的列表,一个具有初始值,一个具有新值。
也就是说,如果您想做的一切,您也可以存储计数。
int initialCount = InitialList.Count;
FinalList = InitialList;
,如果您已经拥有所需的数据,现在不再有理由将一个复制到另一个复制。
我感觉到您实际上想做的比问题中所述的要多,因此,正确的方法可能会根据您实际想做的事情而改变。