2012-01-11 9 views
0

私はC#でMemberwiseClone()関数 を使用することができますが、関数内にオブジェクトがあり、このオブジェクトのコピーを取りたいので、オブジェクトは、ここで を変更した場合、それは同じオブジェクトを参照しませんリスト私のコードはObject 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を使用します。