Avatar ·

Clonagem profunda de objetos em C#: como copiar corretamente um objeto complexo com todas as referências aninhadas?

Olá a todos! Sou novo em C# e encontrei um problema ao copiar objetos. Tenho uma classe `Person` que contém campos de referência, como `List
`. Quando tento fazer uma cópia por atribuição simples (`var copy = original;`), as alterações em `copy` afetam `original`. Entendo que isso é uma cópia superficial (shallow copy) e preciso de uma cópia profunda (deep clone). Tentei implementar `ICloneable`, mas ele cria uma cópia superficial. Tentei copiar manualmente cada campo, mas isso é terrível quando há muitos objetos e eles são aninhados. Aqui está um exemplo do meu código: ```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
(); } // Uso: var person1 = new Person { Name = "Ivan", Age = 30 }; person1.Addresses.Add(new Address { Street