2012-01-11 2 views
0

나는 C#에서 MemberwiseClone() 함수 을 사용할 수 있음을 알고 있지만 함수 내부에 객체가 있으므로이 객체의 복사본을 가져 가고 싶습니다. 객체가 여기 을 변경하면이 같은 객체를 참조하지 않습니다 나열하는 것은 내가Object Shallow Copy in C#

당신에게

감사 새로운 객체에 UndoState 객체를 복사 할 버퍼에 추가 내 코드

public void Do(object undoState) 
    { 
     _index += 1; 
     if (_buffer.Count > _index) 
      _buffer.RemoveRange(_index, _buffer.Count - _index); 
     _buffer.Add(undoState); 
    } 

입니다

+1

참조 http://stackoverflow.com/a/1031062/939213 – ispiro

+0

여기에 명시된 내용은 "이 개체의 복사본을 가져와 목록에 추가 할 때 동일한 개체를 참조하지 않습니다"입니다. 딥 복사 (Deep copy). 개체에 대한 참조 복사본을 만들고 새 개체를 만들고 기본 값을 복사하지는 않습니다. – Lloyd

답변

2

ICloneable 인터페이스에 복사 논리를 추가하십시오. 이제 Do 메서드에서 개체를받는 대신 ICloneable을 사용하십시오.