2013-07-03 37 views
0

好的,我有一個List<string[][]> myList用於存儲一組複雜的字符串。每當需要新分支時,我需要將列表中的所有元素添加到自身。什麼是List.Add(List [index])創建一個新的對象或引用?

所以這是我在做什麼,現在

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

但是,當我修改列表元素之一做在列表中的索引位置List[index].SetValue(value, index) 所有列表元素得到改變!

任何想法爲什麼?我猜這是因爲myList.Add(myList[k])正在創建一個引用,所以基本上,我如何創建它作爲一個新的對象?

+1

取決於myList的類型。 – CodeCaster

+0

糟糕對不起myList是一個簡單的'List ' – rtindru

+1

添加對象的克隆而不是對列表的引用。 – nakiya

回答

0

所以這就是我最終做的事情...請建議一個更好的方法,如果你知道一個。

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

有沒有其他方法可以做到這一點?無需遍歷每個列表成員?

+1

「克隆」對於二維數組的拷貝太淺。你需要編寫自己的克隆方法來創建一個新的數組,並將單個字符串複製到它。或者在第二維中克隆每個1D數組。或者使用一維數組開始。 – RalphChapin

相關問題