2014-12-29 2 views
0

저는 C# win 응용 프로그램을 사용합니다. 나는 나의 명부 사본을 공평하지 않고 가치있게 만들 것입니다. 나는 첫 번째 목록을 항상 원본으로 유지하고 새 목록을 변경하면이 변경 내용이 원래 목록에 나타나지 않습니다. 나는이 코드를 시도했지만 참조 할 사본 beacuse wotk하지 않고하지 내가 wTemp을 수정하고 원래 값으로 _TracList 걸릴 것값으로 새 복사본 목록을 만드는 방법

_TracList = GetMyData(); 
List<FileVers> wTemp = new List<FileVers>(_TracList); 

가치를; 내 목록의 값으로 사본을 만들 수 있습니까?

답변

0

코드 은 값 복사본을 만듭니다. wTemp에서 요소를 제거하면 여전히 _TracList으로 사용할 수 있습니다. 당신이 wTemp에 항목을 수정 그래서 만약

그러나, 코드 는 각 요소의 값 복사가되지 않습니다, 그것은 또한 _TracList에서 수정됩니다. C#에서는 사용자 정의 FileVers 클래스의 값 복사본을 만드는 방법을 모르기 때문에 깊은 복사를 할 수 없습니다. 각 요소의 사본 을 원하는 경우

, 수동으로 만들어야합니다 :

var wTemp = _TracList.Select(x => MakeCopyOf(x)).ToList(); 

MakeCopyOfFileVers 인스턴스를 소요하고 그것의 사본을 돌려 사용자가 제공해야하는 방법이다 .

관련 문제