Pengklonan Dalam Kamus Generik .NET
Mengklon kamus generik .NET adalah penting apabila anda ingin mengekalkannya data tanpa mengubah yang asal. Panduan ini meneroka amalan terbaik untuk pengklonan dalam Kamus
Pengklonan Cetek vs. Dalam
Salinan cetek mencipta kamus baharu yang merujuk objek asal dalam kamus sumber, manakala salinan dalam mencipta objek baharu. Dalam kes ini, anda mahukan salinan yang mendalam untuk memastikan bahawa sebarang perubahan yang dibuat pada kamus yang disalin tidak menjejaskan kamus asal.
Penyelesaian Berasaskan LINQ
Jika anda' menggunakan semula .NET 3.5 atau lebih baru, kaedah LINQ ToDictionary menyediakan penyelesaian yang mudah untuk pengklonan dalam:
var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => (T)entry.Value.Clone());
Ini pendekatan mencipta kamus baharu dengan pasangan nilai kunci yang diklon. Walau bagaimanapun, jika T tidak melaksanakan ICloneable, anda boleh menggunakan tugasan nilai mudah:
var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => entry.Value);
Penyelesaian Pengklonan Tersuai
Anda juga boleh melaksanakan kaedah pengklonan tersuai yang menggunakan pantulan untuk mencipta kejadian baharu bagi semua objek dalam kamus. Jika T melaksanakan ICloneable, anda boleh menggunakan kaedah berikut:
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; }
Atas ialah kandungan terperinci Bagaimana untuk Mengklon Dalam Kamus Generik .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!