ホームページ > バックエンド開発 > C++ > .NET 汎用辞書のクローンを作成する方法: 浅いコピーと深いコピー?

.NET 汎用辞書のクローンを作成する方法: 浅いコピーと深いコピー?

DDD
リリース: 2024-12-31 05:05:27
オリジナル
390 人が閲覧しました

How to Clone a .NET Generic Dictionary: Shallow vs. Deep Copy?

.NET 汎用辞書の複製: 浅いコピーと深いコピーの実現

汎用辞書を使用する場合 .NET では、クローンまたはディープ コピーと呼ばれる同一のコピーを作成することが必要になる場合があります。これは、要件に応じてさまざまなテクニックを活用することで実現できます。

トップレベルのオブジェクトのみがコピーされる浅いコピーを求める場合は、コンストラクターのアプローチを強くお勧めします。この投稿で説明するもう 1 つの方法は、特定のシナリオで有利なクローン作成メカニズムを提供します。

コピーの深さの決定

コピーの深さは、あなたのニーズの詳細。浅いコピーはトップレベルのオブジェクトのみをコピーしますが、深いコピーはすべてのネストされたオブジェクトを含むオブジェクト グラフ全体を複製します。

適切な方法の選択

浅いコピーの場合、最も簡単なアプローチは、既存の辞書を入力として受け取るコンストラクターを使用することです。これにより、同一のキーと値のペアを持つ新しい辞書が効果的に作成されます。必要に応じて、以下に示すように、LINQ の ToDictionary メソッドを使用してこれを実現することもできます。

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

T が ICloneable を実装するときにディープ コピーを実行するには、次に示すように、ToDictionary メソッドを再度利用できます。

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

これらのアプローチにより、特定の要件に適したコピー メカニズムが提供されます。

以上が.NET 汎用辞書のクローンを作成する方法: 浅いコピーと深いコピー?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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