喃疯
易定者无感,易感者无定
在高级编程语言中我们经常会定义一些数据变量的对象,并在不同的功能过程中使用到相同的数据对象,但是往往有时候我们不希望莫格过程中的修改,改变数据的原来面目亦或者是需要一份完全相同的数据变相对象,由此就会使用数据 的复制。
那么浅表复制有深表复制有什么样子的区别呢?
浅表复制:只是复制了数据 在内存中的引用地址,因此如果在数据的副本中修改数据的话,源对象也会同样发生改变。
深表复制:意指堆中的内容也会拷贝。

public ObservableCollection<T> Clone<T>(ObservableCollection<T> inputList) { BinaryFormatter Formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); System.IO.MemoryStream stream = new System.IO.MemoryStream(); Formatter.Serialize(stream, inputList); stream.Position = 0; var outList = Formatter.Deserialize(stream) as ObservableCollection<T>; stream.Close(); return outList; } public List<T> Clone<T>(List<T> inputList) { BinaryFormatter Formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); System.IO.MemoryStream stream = new System.IO.MemoryStream(); Formatter.Serialize(stream, inputList); stream.Position = 0; var outList = Formatter.Deserialize(stream) as List<T>; stream.Close(); return outList; }

 

posted on 2021-08-11 14:51  周子安  阅读(116)  评论(0)    收藏  举报