Clonación profunda de objetos en C#: ¿cómo hacer una copia completa?
¡Hola a todos! Soy nuevo en C# y me encontré con un problema al copiar objetos. Tengo una clase que contiene tipos por referencia (por ejemplo, listas y otras clases). Cuando asigno una instancia a otra, los cambios en la copia afectan al original. Quiero crear una copia completamente independiente del objeto para poder modificarla sin cambiar los datos originales.
Aquí hay un ejemplo de código que demuestra el 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; // Esto es una copia superficial
shallowCopy.Name = "Петр";
shallowCopy.Hobbies.Add("Бег");
Console.WriteLine(original.Name); // Imprime "Иван" (el nombre no cambió)
Console.WriteLine(string.Join(", ", original.Hobbies));
}
}
```