Avatar ·

الاستنساخ العميق للكائنات في C#: كيفية عمل نسخة كاملة؟

مرحبًا بالجميع! أنا مبتدئ في C# وواجهت مشكلة عند نسخ الكائنات. لدي فئة تحتوي على أنواع مرجعية (مثل القوائم والفئات الأخرى). عندما أعيّن مثيلًا لآخر، تؤثر التغييرات في النسخة على الأصل. أريد إنشاء نسخة مستقلة تمامًا من الكائن بحيث يمكنني تعديلها دون تغيير البيانات الأصلية. إليك مثال على الكود الذي يوضح المشكلة: ```csharp public class Person { public string Name { get; set; } public List Hobbies { get; set; } } public class Program { public static void Main() { Person original = new Person { Name = "إيفان", Hobbies = new List { "قراءة", "سباحة" } }; Person shallowCopy = original; // هذه نسخة سطحية shallowCopy.Name = "بيتر"; shallowCopy.Hobbies.Add("جري"); Console.WriteLine(original.Name); // سيُطبع "إيفان" (الاسم لم يتغير) Console.WriteLine(string.Join(", ", original.Hobbies)); // سيُطبع "قراءة, سباحة, جري" (تغيرت القائمة) } } ``` كما ترون، تغيير القائمة في النسخة أثر على الأصل. كيف يمكنني عمل نسخة عميقة بحيث تكون القائمة مستقلة أيضًا؟ شكرًا مقدمًا!