.NET での汎用辞書のディープ コピーの作成
汎用辞書の複製またはディープ コピーの実行 (
浅いクローニングを使用した ToDictionary() メソッド:
キーと値の参照がコピーされる浅いコピーのみが必要な場合は、< cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, Func{TSource, TKey}, Func{TSource, TElement})"/>という方法が使えます。次の例は、浅いコピーを示しています:
var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } }; var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);</p> <p><strong>ToDictionary() ディープ クローニングを使用したメソッド:</strong></p> <p>ネストされたオブジェクトも再帰的にコピーされる深いコピーが必要な場合、<cref="System.ICloneable"/> を参照してください。値型のクローン作成を実装するインターフェイス。次の例は、クローン作成を使用したディープ コピーを示しています:</p> <pre class="brush:php;toolbar:false">class CloneableValue : ICloneable { public int Value { get; set; } public object Clone() { return new CloneableValue { Value = this.Value }; } } Dictionary<string, CloneableValue> originalDict = new Dictionary<string, CloneableValue> { { "Key1", new CloneableValue() { Value = 1 } } }; var deepCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => (CloneableValue)entry.Value.Clone());
カスタム クローン作成メソッド:
または、データ構造に固有のカスタム クローン作成メソッドを作成できます。このメソッドはディクショナリを反復処理し、キー オブジェクトと値オブジェクトの新しいインスタンスを作成し、それに応じて値を割り当てます。以下に例を示します。
public static Dictionary<string, T> CloneDictionary<T>(Dictionary<string, T> originalDict) { Dictionary<string, T> cloneDict = new Dictionary<string, T>(); foreach (KeyValuePair<string, T> entry in originalDict) { cloneDict.Add(entry.Key, (T)entry.Value); } return cloneDict; }
アプローチの選択は、必要なクローン作成の深さとアプリケーションの特定の要件によって異なります。
以上が.NET で汎用辞書のディープ コピーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。