豚吐露@wiki
memcpyみたいにinstanceをcopyしたい
最終更新:
ohden
-
view
複写したいクラスに『Serializable』属性を付与します。
e.g.) Class1に『Serializable』属性を付与したい場合
e.g.) Class1に『Serializable』属性を付与したい場合
[Serializable] class Class1
複写したいクラスに以下のようなメソッドを作成する。
e.g.) Class1の複写機能を作りたい場合
e.g.) Class1の複写機能を作りたい場合
public Class1 DeepCopy() { Class1 ret = null; BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, this); ms.Seek(0, SeekOrigin.Begin); ret = (Class1)bf.Deserialize(ms); return ret; }
後は複写したいinstanceの当該メソッドをcallしてやるだけ。
e.g.) Class1の複写機能を使いたい場合
e.g.) Class1の複写機能を使いたい場合
Class1 cs1 = new Class1(); ~cs1に対する処理~ Class1 cs1cpy = cs1.DeepCopy();
※メンバにインスタンス突っ込むような事をしてるクラスをcopyしたい場合は、突っ込まれるクラスもserialize可能にしとかないとダメです。
更新日: 2014年10月14日 (火) 17時31分44秒