C#深拷贝
User u1=new User();
User u2=u1;
如上的代码使u2和u2同时指向一个地址,那么如何在内存里重新生成一份u1里面的数据呢?
[Serializable]
class DeepCopy
{
public User user;
public DeepCopy CreateCopy(DeepCopy input)
{
MemoryStream m = new MemoryStream();
BinaryFormatter b = new BinaryFormatter();
b.Serialize(m,input);
m.Position = 0;
return (DeepCopy)b.Deserialize(m);
}
}
[Serializable]
class User
{
public string name;
public User(string _name)
{
name = _name;
}
}
下面是自己写的一个实例,直接通过对类的序列化与反序列化来实现深拷贝
class Program
{
static void Main(string[] args)
{
Person p1 = new Person() { Name = "zhangsan" };
BinaryFormatter b = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
b.Serialize(stream, p1);
stream.Seek(0, SeekOrigin.Begin);
Person p2 = (Person)b.Deserialize(stream);
p2.Name = "lisi";
Console.WriteLine(p1.Name + " " + p2.Name);
}
}
[Serializable]
public class Person
{
public string Name { get; set; }
}
浙公网安备 33010602011771号