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)); // 输出 "阅读, 游泳, 跑步"(列表被修改) } } ```