Avatar ·

استنساخ عميق للكائنات في C#: كيف تنسخ كائنًا معقدًا مع جميع المراجع المتداخلة بشكل صحيح؟

مرحبًا بالجميع! أنا مبتدئ في C# وقد واجهت مشكلة عند نسخ الكائنات. لدي كلاس `Person` يحتوي على حقول مرجعية، مثل `List
`. عندما أحاول عمل نسخة عن طريق الإسناد البسيط (`var copy = original;`)، فإن التغييرات في `copy` تؤثر على `original`. أفهم أن هذا هو النسخ السطحي (shallow copy)، وأحتاج إلى النسخ العميق (deep clone). لقد جربت تنفيذ `ICloneable`، لكنه ينشئ نسخة سطحية. حاولت نسخ كل حقل يدويًا، لكن هذا فظيع عندما يكون هناك العديد من الكائنات وتكون متداخلة. إليك مثال على الكود الخاص بي: ```csharp public class Address { public string Street { get; set; } public string City { get; set; } } public class Person { public string Name { get; set; } public int Age { get; set; } public List
Addresses { get; set; } = new List
(); } // الاستخدام: var person1 = new Person { Name = "إيفان", Age = 30 }; person1.Addresses.Add(new Address { Street