Clonagem profunda de objetos em C#: como fazer uma cópia completa?
Olá a todos! Sou novo em C# e encontrei um problema ao copiar objetos. Tenho uma classe que contém tipos por referência (por exemplo, listas e outras classes). Quando atribuo uma instância a outra, as alterações na cópia afetam o original. Quero criar uma cópia completamente independente do objeto, para poder modificá-la sem alterar os dados originais.
Aqui está um exemplo de código que demonstra o problema:
```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; // Isso é uma cópia superficial
shallowCopy.Name = "Петр";
shallowCopy.Hobbies.Add("Бег");
Console.WriteLine(original.Name); // Exibirá "Иван" (o nome não mudou)
Console.WriteLine(string.Join(", ", original.Hobbies));
}
}
```