真のディープコピーが必要です。Java ではこれは簡単ですが、C# ではどのように行うのでしょうか?
ベストアンサー1
重要な注意点
バイナリフォーマッタは非推奨となり、2023年11月以降は.NETでは利用できなくなります。BinaryFormatter 廃止戦略
これについてはいくつかの異なるアプローチを見てきましたが、私は次のような汎用ユーティリティ メソッドを使用します。
public static T DeepClone<T>(this T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
ノート:
これを機能させるには、クラスを としてマークする必要があります
[Serializable]
。ソース ファイルには次のコードが含まれている必要があります。
using System.Runtime.Serialization.Formatters.Binary; using System.IO;