浅拷贝与深拷贝
这里就不解释什么是浅拷贝与深拷贝了,只说一下我遇到的问题,然后怎么解决,这样大家什么就明白了
问题:我要对某一个类的副本进行操作,但是用了各种办法去复制,当我改变副本的东西之后,发现原来的数据也发生了变化,这样是不对的,我只想对其复本操作,原来的数据不能变。
解决办法:
[Serializable]//这是必须的。你可以不加试试看
public class Test
{
string name = String.Empty;
/// <summary>
/// 深拷贝
/// </summary>
/// <returns></returns>
public object DeepCopy()
{
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, this);
stream.Seek(0, SeekOrigin.Begin);
object copy = formatter.Deserialize(stream);
stream.Close();
return copy;
}
}
使用:
Test test = new Test();
test.name = "1234";
Test test_copy = (Test)test.DeepCopy();
test_copy.name = "123";//改变一下它的值然后盾原本的值是否一样。