2012-01-11 3 views
0

Я знаю, что для выполнения мелкой копии в C# мы могли бы использовать функцию MemberwiseClone() , но у меня есть объект внутри функции, и я хочу взять копию этого объекта, поэтому, когда я добавил к список не будет ссылаться на тот же объект, когда объект изменен вот мой кодОбъект Shallow Copy in C#

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

Я хочу, чтобы скопировать UndoState объект на новый объект и добавляется в буфер

спасибо

+1

См. Http://stackoverflow.com/a/1031062/939213 – ispiro

+0

То, что вы здесь указали, «возьмите копию этого объекта, поэтому, когда я добавлен в список, он не будет ссылаться на один и тот же объект» является Глубокая копия, в которой вы не просто создаете копию ссылки на объект, а создаете новый объект и копируете базовые значения. – Lloyd

ответ

2

осуществить ICloneable и добавьте в него свою логику копирования. Теперь вместо того, чтобы получать объект в вашем методе Do, используйте ICloneable.