未来の自分へ知識谷金

ゆーきのエンジニアブログ
C#Visual Studioプログラミング

【C#】オブジェクトのDeepCopyとCompare

.NETC#jsonobjectVisual StudioVisual Studio 2022シリアライズ関数

C#でオブジェクトをコピーするときや比較するときは、単に===演算子を使用すると参照コピー(参照比較)になります。

内部の実体まで複製するコードを記載します。

オブジェクトコピー(DeepCopy)

public static void DeepCopy<T>(T src, out T dst)
        {
            string json = SerializeJson(src);
            dst = DeserializeJson<T>(json);
        }

オブジェクト比較(DeepCompare)

public static bool DeepCompare<T>(T obj1, T obj2)
        {
            string json1 = SerializeJson(obj1);
            string json2 = SerializeJson(obj2);
            return json1 == json2;
        }

基本的にはobjectをstringに変換し、string同士でコピー・比較を行っています。

以上!