public 类型 CloneOf<T>(类型 model) { object objCopy = null; MemoryStream stream = new MemoryStream(); BinaryFormatter binFormatter = new BinaryFormatter(); binFormatter.Serialize(stream, model); stream.Position = 0; objCopy = (T)binFormatter.Deserialize(stream); stream.Close(); return (类型)objCopy; }
值类型的对象之间复制很简单,但是引用类型就比较坑了,因为复制过去的只有引用地址,而不是真实的数据。这就导致以为更改了一个对象,但是结果发现复制出来的几个对象内容也全变了。
此时就需要深复制,因为深复制的时候,会同时创建一个新的对象,这个样子就不会出现给一个对象的内容赋值,而被复制出来的对象内容也发生变化的现象了。