如何在.NET (C#)中正确进行对象的深拷贝?
大家好!我是一名初学C#的开发者,遇到了对象复制的问题。我有一个Person类,其中包含多个嵌套对象,例如Address。当我尝试通过简单赋值来复制对象时,得到的是对同一对象的引用,而不是它的副本。当修改“副本”的属性时,原始对象也会被改变。
以下代码示例说明了这个问题:
```csharp
public class Address
{
public string City { get; set; }
public string Street { get; set; }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Address Address { get; set; }
}
// 使用
var original = new Person
{
Name = "伊万",
Age = 30,
Address = new Address { City = "莫斯科", Street = "特维尔大街" }
};
// 问题:这是浅拷贝
var copy = original;
copy.Name = "彼得";
copy.Address.City = "圣彼得堡";
Console.WriteLine(original.Name); // 伊万 (良好