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