.NET 汎用辞書を複製/ディープコピーする最良の方法は何ですか ? 質問する

.NET 汎用辞書を複製/ディープコピーする最良の方法は何ですか ? 質問する

Dictionary<string, T>基本的に Clone() を作成したい汎用辞書があります。何か提案はありますか。

ベストアンサー1

(注: クローン バージョンは潜在的に便利ですが、単純な浅いコピーの場合は、他の投稿で説明したコンストラクターの方が適しています。)

コピーの深さはどのくらいにしたいですか? また、どのバージョンの .NET を使用していますか? .NET 3.5 を使用している場合は、キーと要素セレクターの両方を指定して ToDictionary に LINQ を呼び出すのが最も簡単な方法だと思います。

たとえば、値が浅いクローンであっても構わない場合:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,
                                               entry => entry.Value);

すでに T に ICloneable を実装するように制約している場合:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, 
                                               entry => (T) entry.Value.Clone());

(これらはテストされていませんが、動作するはずです。)

おすすめ記事