ホームページ > バックエンド開発 > C++ > .NET 汎用辞書をディープ クローンするにはどうすればよいですか?

.NET 汎用辞書をディープ クローンするにはどうすればよいですか?

DDD
リリース: 2024-12-30 16:46:13
オリジナル
795 人が閲覧しました

How to Deep Clone a .NET Generic Dictionary?

.NET 汎用辞書のディープ クローン作成

.NET 汎用辞書のクローン作成は、その辞書を保持したい場合に重要です。オリジナルを変更せずにデータを作成します。このガイドでは、Dictionary のディープ クローン作成のベスト プラクティスについて説明します。

浅いクローン作成とディープ クローン作成の比較

浅いコピーでは、辞書を参照する新しい辞書が作成されます。ソース ディクショナリ内の元のオブジェクトは保存されますが、ディープ コピーによって新しいオブジェクトが作成されます。この場合、コピーされた辞書に加えられた変更が元の辞書に影響を与えないように、ディープ コピーが必要になります。

LINQ ベースのソリューション

.NET 3.5 以降を使用している場合、LINQ ToDictionary メソッドは、深い問題に対する簡単なソリューションを提供します。 cloning:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => (T)entry.Value.Clone());
ログイン後にコピー

このアプローチでは、クローンされたキーと値のペアを含む新しい辞書が作成されます。ただし、T が ICloneable を実装していない場合は、単純な値の割り当てを使用できます。

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => entry.Value);
ログイン後にコピー

カスタム クローニング ソリューション

また、次のようなカスタム クローニング メソッドを実装することもできます。リフレクションを使用して、ディクショナリ内のすべてのオブジェクトの新しいインスタンスを作成します。 T が ICloneable を実装している場合、次のメソッドを使用できます:

public static Dictionary<TKey, TValue> Clone<TKey, TValue>(Dictionary<TKey, TValue> original)
{
    var clonedDictionary = new Dictionary<TKey, TValue>();
    foreach (var entry in original)
        clonedDictionary.Add(entry.Key, (TValue)entry.Value.Clone());
    return clonedDictionary;
}
ログイン後にコピー

以上が.NET 汎用辞書をディープ クローンするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート