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