C# ArrayList深度拷贝
2011-01-10 09:02
218 查看
C#中的赋值分为值赋值和引用赋值,在ArrayList中经常需要用到深度拷贝,教程中一般都用介绍使用IClone接口。
本文介绍另外一种思路:
可以将需要赋值的ArrayList先序列化,然后再反序列化,甚至先保存到一个文件中在读回的方式,后一种方式消耗的时间肯定要多于前一种方式。不过先序列化,然后再反序列化与使用IClone接口之间到底有多大的性能差异还没仔细研究,不过对于一般的小程序而言,用序列化-反序列化来实现深度拷贝更加简明。
列子:
......
public void Clone(List<flight> 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;
flightList = Formatter.Deserialize(stream) as List<flight>;
stream.Close();
}
......
本文介绍另外一种思路:
可以将需要赋值的ArrayList先序列化,然后再反序列化,甚至先保存到一个文件中在读回的方式,后一种方式消耗的时间肯定要多于前一种方式。不过先序列化,然后再反序列化与使用IClone接口之间到底有多大的性能差异还没仔细研究,不过对于一般的小程序而言,用序列化-反序列化来实现深度拷贝更加简明。
列子:
......
public void Clone(List<flight> 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;
flightList = Formatter.Deserialize(stream) as List<flight>;
stream.Close();
}
......
相关文章推荐
- C# 对象深度拷贝
- C#中List泛型集合引用问题(深度拷贝)
- ArrayList的深度copy和浅度拷贝
- C# 深度拷贝
- C#中List<T>对象的深度拷贝问题
- ArrayList的深度copy和浅度拷贝
- C#中List<T>对象的深度拷贝问题
- C#深度拷贝,浅拷贝
- [转帖]C#深度拷贝(Deep Copy)
- 在Unity中使用C#的深度拷贝
- [每日翻译](2)c#深度拷贝对象
- C#深度拷贝(Deep Copy)
- C# 实现Dictionary数据对象的深度拷贝
- C#中List<T>对象的深度拷贝问题
- C#中List<T>对象的深度拷贝问题
- C#中的浅拷贝和深度拷贝
- 【转】Java如何克隆集合——深度拷贝ArrayList和HashSet
- c#:如何处理对对象进行深度拷贝
- Java如何克隆集合——深度拷贝ArrayList和HashSet
- C#深度拷贝(转)