2013-07-03 5 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

'복제'는 2D 배열에 대한 복사본을 너무 얕게 만듭니다. 새 배열을 만들고 개별 문자열을 복사하는 고유 한 복제 메서드를 작성해야합니다. 또는 두 번째 차원의 각 1D 배열을 복제합니다. 또는 1D 배열을 사용하여 시작하십시오. – RalphChapin