ディープコピー
シャローコピーに続き、ディープコピーもメモします。
ディープコピー(deep copy)は詳細コピーと呼ばれるものでオブジェクトのコピーを行います。 フィールドが値型の場合は新しくフィールドのオブジェクトを生成し値を格納します。 参照型の場合も同様に新しくオブジェクトを生成し値を格納します。 つまり参照型であってもコピーしたオブジェクトは異なります。 ディープコピーの実装はすこし手間がかかります。MemberwiseCloneメソッドを呼び出した後に 参照型のオブジェクトを一つずつ自前でコピーしていきます。 注意が必要なのはクラス内で参照型のメンバ変数が増えた場合です。 その場合、このコピーするメソッドも変更しないといけません。 忘れると思わぬところで不具合が発生する可能性が。。 サンプル
MyData.cs
サンプルの変数は以下のようになっています。
|