Mencipta Salinan Dalam Kamus Generik dalam .NET
Mengklon atau melakukan salinan mendalam kamus generik (
Kaedah ToDictionary() dengan Pengklonan Cetek:
Jika anda hanya memerlukan salinan cetek di mana rujukan kunci dan nilai disalin, < lihat cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, Func{TSource, TKey}, Func{TSource, TElement})"/> kaedah boleh digunakan. Contoh berikut menunjukkan salinan cetek:
var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } }; var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);
Kaedah ToDictionary() dengan Pengklonan Dalam:
Jika anda memerlukan salinan dalam di mana objek bersarang juga disalin secara rekursif , anda boleh menggunakan
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());
Kaedah Pengklonan Tersuai:
Sebagai alternatif, anda boleh mencipta kaedah pengklonan tersuai khusus untuk struktur data anda. Kaedah ini akan berulang ke atas kamus, mencipta contoh baharu bagi objek kunci dan nilai, dan menetapkan nilai dengan sewajarnya. Berikut ialah contoh:
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; }
Pilihan pendekatan bergantung pada kedalaman pengklonan yang diperlukan dan keperluan khusus permohonan anda.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Dalam Kamus Generik dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!