2016-08-11 4 views
0

C#에서 목록의 정확한 복제본을 만들 수 있습니까?문자열 목록의 정확한 복제본을 만듭니다.

다른 순서로
List<string> addedAttachments = new List<string>(); 
addedAttachments = (List<string>)HttpContext.Current.Session["UserFeedbackImage"]; 

List<string> tempList = addedAttachments; 

저장 tempList

감사

+0

이것은 단순히 새 목록이 아닌 원래 목록에 대한 새 참조를 만듭니다. –

+0

사실이 아닙니다. 그것은 똑같은 목록입니다 (사본조차도 아닙니다). – SLaks

답변

1

가하는 사본를 만들려고하기 Linq에 : 당신은 당신의 첫 번째 목록의 참조를 할당

List<string> tempList = addedAttachments.ToList(); 
+2

'List '은 생성자'public list (IEnumerable 소스)'을 가지고 있기 때문에'ToList()'확장은'new list (source);' –

3

addadAttachments을 새 변수에 추가하지만 새 목록을 만들지는 마십시오.

는 단순히 목록에서

List<string> tempList = new List<string>(addedAttachments); 

문자열의 순서는 동일하게 유지 호출 할 새 목록을 만듭니다.


그러나 이것이 string 같은 불변의 유형에만 적합 있습니다. 복잡한 변경 가능 개체 목록을 사용하면 동일한 개체를 새 목록에 추가하므로 이전 목록에서 개체의 속성을 변경하면 "새 목록의 개체"도 변경됩니다 ( 임). 변경된 객체). 따라서 개체를 복사해야 할 수도 있습니다. 당신이 List<string>이 문자열은 불변이므로

1

당신은 할 수 있습니다 :

List<string> tempList = addedAttachments.ToList(); 

당신이 다음 cloning 찾아야 목록에 사용자 지정 개체가있는 경우.

관련 문제