ホームページ >バックエンド開発 >C++ >.NETでオブジェクトを深くコピーする方法は?

.NETでオブジェクトを深くコピーする方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-02 14:01:10205ブラウズ

How to Deep Copy Objects in .NET?

.NET

でオブジェクトの深いコピーを達成します この記事では、.NETフレームワーク内でオブジェクトの深いコピーを作成するという課題に対処し、Javaの固有のディープコピー機能に匹敵するソリューションを提供します。

解決策:

一般的なユーティリティ方法は、深いコピーへの簡単なアプローチを提供します:

<code class="language-csharp">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);
    }
}</code>
批判的な考慮事項:

この方法で採用されている

が廃止され、.NETからの除去が予定されていることを認めることが重要です。 将来の互換性のための代替ディープコピー戦略を探索します

BinaryFormatter実装の詳細:

この方法を利用するには、クラスが属性でマークされていることを確認してください。 必要な名前空間を含めてください:

[Serializable]メカニズム:

<code class="language-csharp">using System.Runtime.Serialization.Formatters.Binary;
using System.IO;</code>

プロセスには、2つの重要な手順が含まれます

シリアル化:

入力オブジェクトは

を使用してシリアル化され、メモリストリームに保存されています。
  1. 脱介入:シリアル化されたデータは、ストリームから取得され、新しい独立したオブジェクトが作成されます。 この新しいオブジェクトは、深いコピーを構成します BinaryFormatter
  2. 注意事項:
  3. このメソッドは、シリアル化可能なクラスでのみ機能します。
オブジェクトの構造内の循環参照は、例外につながる可能性があります。

以上が.NETでオブジェクトを深くコピーする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。