我的名单上发生了什么?

Bog*_*dan 0 c# list

为什么

List<Object> objectList; = some objects

List<Object> getList() 
{
  return objectList; //or return new List<Object>(objectList);
}
Run Code Online (Sandbox Code Playgroud)

返回一个列表,其中包含所有引用原始列表项目的项目?

谢谢.

Sim*_*mon 13

在第一种情况下,您只需返回对列表的引用.

在第二种情况(new List<Object>(list))中,不复制对象:仅复制引用!您必须克隆集合中的每个项目以返回列表的深层副本.

编辑:

遍历整个列表并创建每个对象的副本并将它们放入新列表中.

请参阅此内容以创建自定义对象的深层副本.我建议不要使用界面ICloneable.做一些研究以了解原因.:)