List.Add(List [index])创建新对象或引用是什么?

时间:2013-07-03 06:25:42

标签: c# list object reference mutation

好的,我有一个List<string[][]> myList用于存储一组复杂的字符串。 每次需要新分支时,我都需要将列表的所有元素添加到自身。

所以这就是我现在正在做的事情

 for (int k = 0; k < (count); k++)
 {
     myList.Add(myList[k]);
 }

但是当我通过List[index].SetValue(value, index)修改其中一个列表元素时 该索引列表中的所有列表元素都会发生变化!

知道为什么吗?我猜这是因为myList.Add(myList[k])正在创建一个引用,所以基本上,我如何将它创建为一个新的对象?

1 个答案:

答案 0 :(得分:0)

所以这就是我最终做的......如果你知道一个,请提出一个更好的方法。

for (int k = 0; k < (count); k++)
 {
     myList.Add((string[][])myList[k].Clone());
 }

还有其他办法吗?无需遍历每个列表成员?