Creando una copia de un objeto en C # [duplicado]
Posible duplicado:
¿Cómo se hace una copia profunda de un objeto en .Net (C # específicamente)?
Por favor, eche un vistazo al siguiente código (extracto de un libro de C #):
namespace Example {
class MyClass {
public int val;
}
struct myStruct {
public int val;
}
class Program {
static void Main(string[] args) {
MyClass objectA = new MyClass();
MyClass objectB = objectA;
objectA.val = 10;
objectB.val = 20;
myStruct structA = new myStruct();
myStruct structB = structA;
structA.val = 30;
structB.val = 40;
Console.WriteLine("objectA.val = {0}", objectA.val);
Console.WriteLine("objectB.val = {0}", objectB.val);
Console.WriteLine("structA.val = {0}", structA.val);
Console.WriteLine("structB.val = {0}", structB.val);
Console.ReadKey();
}
}
}
Entiendo que produce la salida debajo de
objectA.val = 20
objectB.val = 20
structA.val = 30
structB.val = 40
Las últimas dos líneas de la salida no tengo ningún problema, pero las dos primeras me dicen queobjectA
yobjectB
apuntan al mismo bloque de memoria (ya que en C #, los objetos son tipos de referencia).
La pregunta es cómo hacerobjectB
, una copia deobjectA
para que apunte a un área diferente en la memoria. Entiendo que tratar de asignar a sus miembros puede no funcionar ya que esos miembros también pueden ser referencias. Entonces, ¿cómo hago para hacerobjectB
una entidad completamente diferente deobjectA
?
Gracia